@macrostrat/column-views 2.4.4 → 3.0.1
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 +9 -0
- package/dist/age-axis.cjs +123 -0
- package/dist/age-axis.cjs.map +1 -0
- package/dist/age-axis.d.ts +33 -0
- package/dist/age-axis.js +123 -0
- package/dist/age-axis.js.map +1 -0
- package/dist/age-axis.module.sass.cjs +18 -0
- package/dist/age-axis.module.sass.cjs.map +1 -0
- package/dist/age-axis.module.sass.js +18 -0
- package/dist/age-axis.module.sass.js.map +1 -0
- package/dist/age-model-overlay.cjs +48 -0
- package/dist/age-model-overlay.cjs.map +1 -0
- package/dist/age-model-overlay.d.ts +24 -0
- package/dist/age-model-overlay.js +48 -0
- package/dist/age-model-overlay.js.map +1 -0
- package/dist/age-model-overlay.module.sass.cjs +8 -0
- package/dist/age-model-overlay.module.sass.cjs.map +1 -0
- package/dist/age-model-overlay.module.sass.js +8 -0
- package/dist/age-model-overlay.module.sass.js.map +1 -0
- package/dist/column-views.css +685 -0
- package/dist/column.cjs +247 -0
- package/dist/column.cjs.map +1 -0
- package/dist/column.d.ts +44 -0
- package/dist/column.js +247 -0
- package/dist/column.js.map +1 -0
- package/dist/column.module.sass.cjs +33 -0
- package/dist/column.module.sass.cjs.map +1 -0
- package/dist/column.module.sass.js +33 -0
- package/dist/column.module.sass.js.map +1 -0
- package/dist/correlation-chart/hash-string.cjs +46 -0
- package/dist/correlation-chart/hash-string.cjs.map +1 -0
- package/dist/correlation-chart/hash-string.d.ts +3 -0
- package/dist/correlation-chart/hash-string.js +46 -0
- package/dist/correlation-chart/hash-string.js.map +1 -0
- package/dist/correlation-chart/index.d.ts +2 -0
- package/dist/correlation-chart/main.cjs +202 -0
- package/dist/correlation-chart/main.cjs.map +1 -0
- package/dist/correlation-chart/main.d.ts +15 -0
- package/dist/correlation-chart/main.js +202 -0
- package/dist/correlation-chart/main.js.map +1 -0
- package/dist/correlation-chart/main.module.sass.cjs +28 -0
- package/dist/correlation-chart/main.module.sass.cjs.map +1 -0
- package/dist/correlation-chart/main.module.sass.js +28 -0
- package/dist/correlation-chart/main.module.sass.js.map +1 -0
- package/dist/correlation-chart/prepare-data.cjs +62 -0
- package/dist/correlation-chart/prepare-data.cjs.map +1 -0
- package/dist/correlation-chart/prepare-data.d.ts +52 -0
- package/dist/correlation-chart/prepare-data.js +62 -0
- package/dist/correlation-chart/prepare-data.js.map +1 -0
- package/dist/correlation-chart/stories/utils.d.ts +6 -0
- package/dist/correlation-chart/unconformity-line.d.ts +3 -0
- package/dist/data-provider/base.cjs +349 -0
- package/dist/data-provider/base.cjs.map +1 -0
- package/dist/data-provider/base.d.ts +65 -0
- package/dist/data-provider/base.js +349 -0
- package/dist/data-provider/base.js.map +1 -0
- package/dist/data-provider/column-nav.cjs +36 -0
- package/dist/data-provider/column-nav.cjs.map +1 -0
- package/dist/data-provider/column-nav.d.ts +13 -0
- package/dist/data-provider/column-nav.js +36 -0
- package/dist/data-provider/column-nav.js.map +1 -0
- package/dist/data-provider/core.cjs +56 -0
- package/dist/data-provider/core.cjs.map +1 -0
- package/dist/data-provider/core.d.ts +31 -0
- package/dist/data-provider/core.js +56 -0
- package/dist/{esm/column-views.67804ce5.js.map → data-provider/core.js.map} +1 -1
- package/dist/data-provider/fetch.cjs +210 -0
- package/dist/data-provider/fetch.cjs.map +1 -0
- package/dist/data-provider/fetch.d.ts +27 -0
- package/dist/data-provider/fetch.js +210 -0
- package/dist/data-provider/fetch.js.map +1 -0
- package/dist/data-provider/index.d.ts +5 -0
- package/dist/data-provider/store.cjs +107 -0
- package/dist/data-provider/store.cjs.map +1 -0
- package/dist/data-provider/store.d.ts +34 -0
- package/dist/data-provider/store.js +107 -0
- package/dist/data-provider/store.js.map +1 -0
- package/dist/data-provider/unit-selection.cjs +225 -0
- package/dist/data-provider/unit-selection.cjs.map +1 -0
- package/dist/data-provider/unit-selection.d.ts +49 -0
- package/dist/data-provider/unit-selection.js +225 -0
- package/dist/data-provider/unit-selection.js.map +1 -0
- package/dist/facets/carbon-isotopes/data-area.cjs +64 -0
- package/dist/facets/carbon-isotopes/data-area.cjs.map +1 -0
- package/dist/facets/carbon-isotopes/data-area.d.ts +13 -0
- package/dist/facets/carbon-isotopes/data-area.js +64 -0
- package/dist/facets/carbon-isotopes/data-area.js.map +1 -0
- package/dist/facets/carbon-isotopes/data-provider.cjs +20 -0
- package/dist/facets/carbon-isotopes/data-provider.cjs.map +1 -0
- package/dist/facets/carbon-isotopes/data-provider.d.ts +4 -0
- package/dist/facets/carbon-isotopes/data-provider.js +20 -0
- package/dist/facets/carbon-isotopes/data-provider.js.map +1 -0
- package/dist/facets/carbon-isotopes/index.d.ts +2 -0
- package/dist/facets/carbon-isotopes/isotopes-column.cjs +174 -0
- package/dist/facets/carbon-isotopes/isotopes-column.cjs.map +1 -0
- package/dist/facets/carbon-isotopes/isotopes-column.d.ts +19 -0
- package/dist/facets/carbon-isotopes/isotopes-column.js +174 -0
- package/dist/facets/carbon-isotopes/isotopes-column.js.map +1 -0
- package/dist/facets/carbon-isotopes/isotopes-column.module.sass.cjs +15 -0
- package/dist/facets/carbon-isotopes/isotopes-column.module.sass.cjs.map +1 -0
- package/dist/facets/carbon-isotopes/isotopes-column.module.sass.js +15 -0
- package/dist/facets/carbon-isotopes/isotopes-column.module.sass.js.map +1 -0
- package/dist/facets/detrital-zircon/index.cjs +108 -0
- package/dist/facets/detrital-zircon/index.cjs.map +1 -0
- package/dist/facets/detrital-zircon/index.d.ts +24 -0
- package/dist/facets/detrital-zircon/index.js +108 -0
- package/dist/facets/detrital-zircon/index.js.map +1 -0
- package/dist/facets/detrital-zircon/index.module.sass.cjs +11 -0
- package/dist/facets/detrital-zircon/index.module.sass.cjs.map +1 -0
- package/dist/facets/detrital-zircon/index.module.sass.js +11 -0
- package/dist/facets/detrital-zircon/index.module.sass.js.map +1 -0
- package/dist/facets/detrital-zircon/provider.cjs +22 -0
- package/dist/facets/detrital-zircon/provider.cjs.map +1 -0
- package/dist/facets/detrital-zircon/provider.d.ts +31 -0
- package/dist/facets/detrital-zircon/provider.js +22 -0
- package/dist/facets/detrital-zircon/provider.js.map +1 -0
- package/dist/facets/fossils/index.cjs +120 -0
- package/dist/facets/fossils/index.cjs.map +1 -0
- package/dist/facets/fossils/index.d.ts +7 -0
- package/dist/facets/fossils/index.js +120 -0
- package/dist/facets/fossils/index.js.map +1 -0
- package/dist/facets/fossils/provider.cjs +99 -0
- package/dist/facets/fossils/provider.cjs.map +1 -0
- package/dist/facets/fossils/provider.d.ts +29 -0
- package/dist/facets/fossils/provider.js +99 -0
- package/dist/facets/fossils/provider.js.map +1 -0
- package/dist/facets/fossils/taxon-ranges.cjs +145 -0
- package/dist/facets/fossils/taxon-ranges.cjs.map +1 -0
- package/dist/facets/fossils/taxon-ranges.d.ts +3 -0
- package/dist/facets/fossils/taxon-ranges.js +145 -0
- package/dist/facets/fossils/taxon-ranges.js.map +1 -0
- package/dist/facets/fossils/taxon-ranges.module.sass.cjs +13 -0
- package/dist/facets/fossils/taxon-ranges.module.sass.cjs.map +1 -0
- package/dist/facets/fossils/taxon-ranges.module.sass.js +13 -0
- package/dist/facets/fossils/taxon-ranges.module.sass.js.map +1 -0
- package/dist/facets/index.d.ts +4 -0
- package/dist/facets/measurements/base.cjs +128 -0
- package/dist/facets/measurements/base.cjs.map +1 -0
- package/dist/facets/measurements/base.d.ts +46 -0
- package/dist/facets/measurements/base.js +128 -0
- package/dist/facets/measurements/base.js.map +1 -0
- package/dist/facets/measurements/base.module.sass.cjs +8 -0
- package/dist/facets/measurements/base.module.sass.cjs.map +1 -0
- package/dist/facets/measurements/base.module.sass.js +8 -0
- package/dist/facets/measurements/base.module.sass.js.map +1 -0
- package/dist/facets/measurements/index.d.ts +2 -0
- package/dist/facets/measurements/sgp.cjs +62 -0
- package/dist/facets/measurements/sgp.cjs.map +1 -0
- package/dist/facets/measurements/sgp.d.ts +3 -0
- package/dist/facets/measurements/sgp.js +62 -0
- package/dist/facets/measurements/sgp.js.map +1 -0
- package/dist/index.cjs +164 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +164 -0
- package/dist/index.js.map +1 -0
- package/dist/maps/_shared/index.d.ts +2 -0
- package/dist/maps/_shared/inset-map.cjs +69 -0
- package/dist/maps/_shared/inset-map.cjs.map +1 -0
- package/dist/maps/_shared/inset-map.d.ts +16 -0
- package/dist/maps/_shared/inset-map.js +69 -0
- package/dist/maps/_shared/inset-map.js.map +1 -0
- package/dist/maps/_shared/styles.cjs +68 -0
- package/dist/maps/_shared/styles.cjs.map +1 -0
- package/dist/maps/_shared/styles.d.ts +2 -0
- package/dist/maps/_shared/styles.js +68 -0
- package/dist/maps/_shared/styles.js.map +1 -0
- package/dist/maps/column-correlation/core.cjs +185 -0
- package/dist/maps/column-correlation/core.cjs.map +1 -0
- package/dist/maps/column-correlation/core.d.ts +9 -0
- package/dist/maps/column-correlation/core.js +185 -0
- package/dist/maps/column-correlation/core.js.map +1 -0
- package/dist/maps/column-correlation/index.d.ts +2 -0
- package/dist/maps/column-correlation/state.cjs +129 -0
- package/dist/maps/column-correlation/state.cjs.map +1 -0
- package/dist/maps/column-correlation/state.d.ts +31 -0
- package/dist/maps/column-correlation/state.js +129 -0
- package/dist/maps/column-correlation/state.js.map +1 -0
- package/dist/maps/column-navigation/index.d.ts +2 -0
- package/dist/maps/column-navigation/mapbox/index.cjs +175 -0
- package/dist/maps/column-navigation/mapbox/index.cjs.map +1 -0
- package/dist/maps/column-navigation/mapbox/index.d.ts +17 -0
- package/dist/maps/column-navigation/mapbox/index.js +175 -0
- package/dist/maps/column-navigation/mapbox/index.js.map +1 -0
- package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs +99 -0
- package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs.map +1 -0
- package/dist/maps/column-navigation/mapbox/keyboard-navigation.d.ts +31 -0
- package/dist/maps/column-navigation/mapbox/keyboard-navigation.js +99 -0
- package/dist/maps/column-navigation/mapbox/keyboard-navigation.js.map +1 -0
- package/dist/maps/column-navigation/mapbox/state.cjs +71 -0
- package/dist/maps/column-navigation/mapbox/state.cjs.map +1 -0
- package/dist/maps/column-navigation/mapbox/state.d.ts +23 -0
- package/dist/maps/column-navigation/mapbox/state.js +71 -0
- package/dist/maps/column-navigation/mapbox/state.js.map +1 -0
- package/dist/maps/column-navigation/svg/animated.d.ts +1 -0
- package/dist/maps/column-navigation/svg/index.cjs +92 -0
- package/dist/maps/column-navigation/svg/index.cjs.map +1 -0
- package/dist/maps/column-navigation/svg/index.d.ts +9 -0
- package/dist/maps/column-navigation/svg/index.js +93 -0
- package/dist/maps/column-navigation/svg/index.js.map +1 -0
- package/dist/maps/column-navigation/svg/layers.cjs +175 -0
- package/dist/maps/column-navigation/svg/layers.cjs.map +1 -0
- package/dist/maps/column-navigation/svg/layers.d.ts +54 -0
- package/dist/maps/column-navigation/svg/layers.js +175 -0
- package/dist/maps/column-navigation/svg/layers.js.map +1 -0
- package/dist/maps/column-navigation/utils/keyboard-navigation.cjs +50 -0
- package/dist/maps/column-navigation/utils/keyboard-navigation.cjs.map +1 -0
- package/dist/maps/column-navigation/utils/keyboard-navigation.d.ts +10 -0
- package/dist/maps/column-navigation/utils/keyboard-navigation.js +50 -0
- package/dist/maps/column-navigation/utils/keyboard-navigation.js.map +1 -0
- package/dist/maps/index.d.ts +3 -0
- package/dist/notes.cjs +41 -0
- package/dist/notes.cjs.map +1 -0
- package/dist/notes.d.ts +12 -0
- package/dist/notes.js +41 -0
- package/dist/notes.js.map +1 -0
- package/dist/prepare-units/composite-scale.cjs +284 -0
- package/dist/prepare-units/composite-scale.cjs.map +1 -0
- package/dist/prepare-units/composite-scale.d.ts +19 -0
- package/dist/prepare-units/composite-scale.js +284 -0
- package/dist/prepare-units/composite-scale.js.map +1 -0
- package/dist/prepare-units/dynamic-scales.cjs +190 -0
- package/dist/prepare-units/dynamic-scales.cjs.map +1 -0
- package/dist/prepare-units/dynamic-scales.d.ts +13 -0
- package/dist/prepare-units/dynamic-scales.js +190 -0
- package/dist/prepare-units/dynamic-scales.js.map +1 -0
- package/dist/prepare-units/helpers.cjs +198 -0
- package/dist/prepare-units/helpers.cjs.map +1 -0
- package/dist/prepare-units/helpers.d.ts +10 -0
- package/dist/prepare-units/helpers.js +198 -0
- package/dist/prepare-units/helpers.js.map +1 -0
- package/dist/prepare-units/index.cjs +130 -0
- package/dist/prepare-units/index.cjs.map +1 -0
- package/dist/prepare-units/index.d.ts +10 -0
- package/dist/prepare-units/index.js +131 -0
- package/dist/prepare-units/index.js.map +1 -0
- package/dist/prepare-units/types.cjs +16 -0
- package/dist/prepare-units/types.cjs.map +1 -0
- package/dist/prepare-units/types.d.ts +99 -0
- package/dist/prepare-units/types.js +16 -0
- package/dist/prepare-units/types.js.map +1 -0
- package/dist/prepare-units/utils.cjs +99 -0
- package/dist/prepare-units/utils.cjs.map +1 -0
- package/dist/prepare-units/utils.d.ts +39 -0
- package/dist/prepare-units/utils.js +99 -0
- package/dist/prepare-units/utils.js.map +1 -0
- package/dist/section.cjs +269 -0
- package/dist/section.cjs.map +1 -0
- package/dist/section.d.ts +45 -0
- package/dist/section.js +269 -0
- package/dist/section.js.map +1 -0
- package/dist/unit-details/index.d.ts +3 -0
- package/dist/unit-details/modal-panel.cjs +57 -0
- package/dist/unit-details/modal-panel.cjs.map +1 -0
- package/dist/unit-details/modal-panel.d.ts +1 -0
- package/dist/unit-details/modal-panel.js +57 -0
- package/dist/unit-details/modal-panel.js.map +1 -0
- package/dist/unit-details/panel.cjs +627 -0
- package/dist/unit-details/panel.cjs.map +1 -0
- package/dist/unit-details/panel.d.ts +87 -0
- package/dist/unit-details/panel.js +627 -0
- package/dist/unit-details/panel.js.map +1 -0
- package/dist/unit-details/panel.module.sass.cjs +42 -0
- package/dist/unit-details/panel.module.sass.cjs.map +1 -0
- package/dist/unit-details/panel.module.sass.js +42 -0
- package/dist/unit-details/panel.module.sass.js.map +1 -0
- package/dist/unit-details/popover.cjs +81 -0
- package/dist/unit-details/popover.cjs.map +1 -0
- package/dist/unit-details/popover.d.ts +9 -0
- package/dist/unit-details/popover.js +81 -0
- package/dist/unit-details/popover.js.map +1 -0
- package/dist/unit-details/popover.module.sass.cjs +10 -0
- package/dist/unit-details/popover.module.sass.cjs.map +1 -0
- package/dist/unit-details/popover.module.sass.js +10 -0
- package/dist/unit-details/popover.module.sass.js.map +1 -0
- package/dist/units/boxes.cjs +187 -0
- package/dist/units/boxes.cjs.map +1 -0
- package/dist/units/boxes.d.ts +54 -0
- package/dist/units/boxes.js +187 -0
- package/dist/units/boxes.js.map +1 -0
- package/dist/units/boxes.module.sass.cjs +11 -0
- package/dist/units/boxes.module.sass.cjs.map +1 -0
- package/dist/units/boxes.module.sass.js +11 -0
- package/dist/units/boxes.module.sass.js.map +1 -0
- package/dist/units/colors.cjs +52 -0
- package/dist/units/colors.cjs.map +1 -0
- package/dist/units/colors.d.ts +7 -0
- package/dist/units/colors.js +52 -0
- package/dist/units/colors.js.map +1 -0
- package/dist/units/composite.cjs +157 -0
- package/dist/units/composite.cjs.map +1 -0
- package/dist/units/composite.d.ts +39 -0
- package/dist/units/composite.js +157 -0
- package/dist/units/composite.js.map +1 -0
- package/dist/units/composite.module.sass.cjs +7 -0
- package/dist/units/composite.module.sass.cjs.map +1 -0
- package/dist/units/composite.module.sass.js +7 -0
- package/dist/units/composite.module.sass.js.map +1 -0
- package/dist/units/index.cjs +117 -0
- package/dist/units/index.cjs.map +1 -0
- package/dist/units/index.d.ts +40 -0
- package/dist/units/index.js +118 -0
- package/dist/units/index.js.map +1 -0
- package/dist/units/names.cjs +72 -0
- package/dist/units/names.cjs.map +1 -0
- package/dist/units/names.d.ts +33 -0
- package/dist/units/names.js +72 -0
- package/dist/units/names.js.map +1 -0
- package/dist/units/resolvers.cjs +114 -0
- package/dist/units/resolvers.cjs.map +1 -0
- package/dist/units/resolvers.d.ts +3 -0
- package/dist/units/resolvers.js +114 -0
- package/dist/units/resolvers.js.map +1 -0
- package/dist/units/types.d.ts +16 -0
- package/package.json +52 -55
- package/src/unit-details/popover.module.sass +3 -3
- package/dist/esm/column-views.006d5180.js +0 -97
- package/dist/esm/column-views.006d5180.js.map +0 -1
- package/dist/esm/column-views.052498a6.js +0 -93
- package/dist/esm/column-views.052498a6.js.map +0 -1
- package/dist/esm/column-views.079119f4.js +0 -17
- package/dist/esm/column-views.079119f4.js.map +0 -1
- package/dist/esm/column-views.0abf7e10.js +0 -67
- package/dist/esm/column-views.0abf7e10.js.map +0 -1
- package/dist/esm/column-views.0b3c0d18.js +0 -322
- package/dist/esm/column-views.0b3c0d18.js.map +0 -1
- package/dist/esm/column-views.0ed9da35.js +0 -141
- package/dist/esm/column-views.0ed9da35.js.map +0 -1
- package/dist/esm/column-views.0faf79a9.js +0 -142
- package/dist/esm/column-views.0faf79a9.js.map +0 -1
- package/dist/esm/column-views.16cc7a58.css +0 -37
- package/dist/esm/column-views.16cc7a58.css.map +0 -1
- package/dist/esm/column-views.17a70358.js +0 -16
- package/dist/esm/column-views.17a70358.js.map +0 -1
- package/dist/esm/column-views.19539293.js +0 -86
- package/dist/esm/column-views.19539293.js.map +0 -1
- package/dist/esm/column-views.1af3ec1f.js +0 -139
- package/dist/esm/column-views.1af3ec1f.js.map +0 -1
- package/dist/esm/column-views.1cd55918.js +0 -206
- package/dist/esm/column-views.1cd55918.js.map +0 -1
- package/dist/esm/column-views.22ec902b.js +0 -34
- package/dist/esm/column-views.22ec902b.js.map +0 -1
- package/dist/esm/column-views.2a0010a3.js +0 -15
- package/dist/esm/column-views.2a0010a3.js.map +0 -1
- package/dist/esm/column-views.2c45a7b5.js +0 -25
- package/dist/esm/column-views.2c45a7b5.js.map +0 -1
- package/dist/esm/column-views.321af3ae.css +0 -59
- package/dist/esm/column-views.321af3ae.css.map +0 -1
- package/dist/esm/column-views.334c3947.js +0 -75
- package/dist/esm/column-views.334c3947.js.map +0 -1
- package/dist/esm/column-views.33796541.js +0 -88
- package/dist/esm/column-views.33796541.js.map +0 -1
- package/dist/esm/column-views.337b40a2.js +0 -199
- package/dist/esm/column-views.337b40a2.js.map +0 -1
- package/dist/esm/column-views.338a7a83.css +0 -134
- package/dist/esm/column-views.338a7a83.css.map +0 -1
- package/dist/esm/column-views.33d35a44.js +0 -118
- package/dist/esm/column-views.33d35a44.js.map +0 -1
- package/dist/esm/column-views.3465c8ad.js +0 -16
- package/dist/esm/column-views.3465c8ad.js.map +0 -1
- package/dist/esm/column-views.362aae9a.js +0 -113
- package/dist/esm/column-views.362aae9a.js.map +0 -1
- package/dist/esm/column-views.3b972a9b.css +0 -4
- package/dist/esm/column-views.3b972a9b.css.map +0 -1
- package/dist/esm/column-views.3de4dc43.js +0 -66
- package/dist/esm/column-views.3de4dc43.js.map +0 -1
- package/dist/esm/column-views.40cd59b5.js +0 -13
- package/dist/esm/column-views.40cd59b5.js.map +0 -1
- package/dist/esm/column-views.4252a555.js +0 -248
- package/dist/esm/column-views.4252a555.js.map +0 -1
- package/dist/esm/column-views.45c70ba4.js +0 -38
- package/dist/esm/column-views.45c70ba4.js.map +0 -1
- package/dist/esm/column-views.47b7d9ca.js +0 -206
- package/dist/esm/column-views.47b7d9ca.js.map +0 -1
- package/dist/esm/column-views.47ca059d.js +0 -225
- package/dist/esm/column-views.47ca059d.js.map +0 -1
- package/dist/esm/column-views.4d374a35.js +0 -19
- package/dist/esm/column-views.4d374a35.js.map +0 -1
- package/dist/esm/column-views.54c1f382.css +0 -23
- package/dist/esm/column-views.54c1f382.css.map +0 -1
- package/dist/esm/column-views.562db43a.css +0 -148
- package/dist/esm/column-views.562db43a.css.map +0 -1
- package/dist/esm/column-views.5e1c216f.js +0 -180
- package/dist/esm/column-views.5e1c216f.js.map +0 -1
- package/dist/esm/column-views.60e97132.js +0 -20
- package/dist/esm/column-views.60e97132.js.map +0 -1
- package/dist/esm/column-views.636d6553.js +0 -343
- package/dist/esm/column-views.636d6553.js.map +0 -1
- package/dist/esm/column-views.64f6ddd3.js +0 -9
- package/dist/esm/column-views.64f6ddd3.js.map +0 -1
- package/dist/esm/column-views.6519a353.js +0 -9
- package/dist/esm/column-views.6519a353.js.map +0 -1
- package/dist/esm/column-views.67804ce5.js +0 -68
- package/dist/esm/column-views.6992ca88.js +0 -25
- package/dist/esm/column-views.6992ca88.js.map +0 -1
- package/dist/esm/column-views.6a954628.js +0 -70
- package/dist/esm/column-views.6a954628.js.map +0 -1
- package/dist/esm/column-views.6c670c13.css +0 -26
- package/dist/esm/column-views.6c670c13.css.map +0 -1
- package/dist/esm/column-views.6cff6659.js +0 -11
- package/dist/esm/column-views.6cff6659.js.map +0 -1
- package/dist/esm/column-views.6d6b73b4.js +0 -55
- package/dist/esm/column-views.6d6b73b4.js.map +0 -1
- package/dist/esm/column-views.6f9511d1.css +0 -25
- package/dist/esm/column-views.6f9511d1.css.map +0 -1
- package/dist/esm/column-views.6fff7602.js +0 -94
- package/dist/esm/column-views.6fff7602.js.map +0 -1
- package/dist/esm/column-views.70387120.js +0 -9
- package/dist/esm/column-views.70387120.js.map +0 -1
- package/dist/esm/column-views.708140ab.css +0 -36
- package/dist/esm/column-views.708140ab.css.map +0 -1
- package/dist/esm/column-views.74837922.js +0 -112
- package/dist/esm/column-views.74837922.js.map +0 -1
- package/dist/esm/column-views.76fb9948.js +0 -169
- package/dist/esm/column-views.76fb9948.js.map +0 -1
- package/dist/esm/column-views.7bfb4318.js +0 -161
- package/dist/esm/column-views.7bfb4318.js.map +0 -1
- package/dist/esm/column-views.7dc53f1b.js +0 -168
- package/dist/esm/column-views.7dc53f1b.js.map +0 -1
- package/dist/esm/column-views.85df21ec.js +0 -567
- package/dist/esm/column-views.85df21ec.js.map +0 -1
- package/dist/esm/column-views.87c589b7.js +0 -72
- package/dist/esm/column-views.87c589b7.js.map +0 -1
- package/dist/esm/column-views.8da2b857.js +0 -81
- package/dist/esm/column-views.8da2b857.js.map +0 -1
- package/dist/esm/column-views.8fb37de7.js +0 -9
- package/dist/esm/column-views.8fb37de7.js.map +0 -1
- package/dist/esm/column-views.9512c5d5.js +0 -240
- package/dist/esm/column-views.9512c5d5.js.map +0 -1
- package/dist/esm/column-views.9905b91c.js +0 -11
- package/dist/esm/column-views.9905b91c.js.map +0 -1
- package/dist/esm/column-views.9b77388d.js +0 -41
- package/dist/esm/column-views.9b77388d.js.map +0 -1
- package/dist/esm/column-views.a4f394fe.js +0 -127
- package/dist/esm/column-views.a4f394fe.js.map +0 -1
- package/dist/esm/column-views.a7c5ae16.js +0 -25
- package/dist/esm/column-views.a7c5ae16.js.map +0 -1
- package/dist/esm/column-views.aa9ede4d.js +0 -206
- package/dist/esm/column-views.aa9ede4d.js.map +0 -1
- package/dist/esm/column-views.b7cf0da2.js +0 -60
- package/dist/esm/column-views.b7cf0da2.js.map +0 -1
- package/dist/esm/column-views.beb54e95.js +0 -39
- package/dist/esm/column-views.beb54e95.js.map +0 -1
- package/dist/esm/column-views.c47dba5f.js +0 -9
- package/dist/esm/column-views.c47dba5f.js.map +0 -1
- package/dist/esm/column-views.c750a6df.js +0 -9
- package/dist/esm/column-views.c750a6df.js.map +0 -1
- package/dist/esm/column-views.cb1cc9f2.js +0 -134
- package/dist/esm/column-views.cb1cc9f2.js.map +0 -1
- package/dist/esm/column-views.cb6fc808.css +0 -54
- package/dist/esm/column-views.cb6fc808.css.map +0 -1
- package/dist/esm/column-views.cc733361.js +0 -55
- package/dist/esm/column-views.cc733361.js.map +0 -1
- package/dist/esm/column-views.ce000969.js +0 -187
- package/dist/esm/column-views.ce000969.js.map +0 -1
- package/dist/esm/column-views.d5e788e8.js +0 -31
- package/dist/esm/column-views.d5e788e8.js.map +0 -1
- package/dist/esm/column-views.d7740949.js +0 -152
- package/dist/esm/column-views.d7740949.js.map +0 -1
- package/dist/esm/column-views.d7e6bf67.js +0 -70
- package/dist/esm/column-views.d7e6bf67.js.map +0 -1
- package/dist/esm/column-views.dac0a3bb.js +0 -149
- package/dist/esm/column-views.dac0a3bb.js.map +0 -1
- package/dist/esm/column-views.dc42f5d0.js +0 -48
- package/dist/esm/column-views.dc42f5d0.js.map +0 -1
- package/dist/esm/column-views.e13a0a76.js +0 -138
- package/dist/esm/column-views.e13a0a76.js.map +0 -1
- package/dist/esm/column-views.e40b8bfb.css +0 -14
- package/dist/esm/column-views.e40b8bfb.css.map +0 -1
- package/dist/esm/column-views.e93478c3.css +0 -194
- package/dist/esm/column-views.e93478c3.css.map +0 -1
- package/dist/esm/column-views.ea08f667.js +0 -218
- package/dist/esm/column-views.ea08f667.js.map +0 -1
- package/dist/esm/column-views.ebb5f280.js +0 -13
- package/dist/esm/column-views.ebb5f280.js.map +0 -1
- package/dist/esm/column-views.edf77621.js +0 -22
- package/dist/esm/column-views.edf77621.js.map +0 -1
- package/dist/esm/column-views.f9dab157.js +0 -3
- package/dist/esm/column-views.f9dab157.js.map +0 -1
- package/dist/esm/column-views.fcf25ec6.js +0 -76
- package/dist/esm/column-views.fcf25ec6.js.map +0 -1
- package/dist/esm/column-views.fe42d2fc.js +0 -134
- package/dist/esm/column-views.fe42d2fc.js.map +0 -1
- package/dist/esm/index.d.ts +0 -1008
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js +0 -27
- package/dist/esm/index.js.map +0 -1
- package/dist/node/column-views.012fa10c.js +0 -2
- package/dist/node/column-views.012fa10c.js.map +0 -1
- package/dist/node/column-views.048fdcaf.js +0 -2
- package/dist/node/column-views.048fdcaf.js.map +0 -1
- package/dist/node/column-views.04a72b35.js +0 -2
- package/dist/node/column-views.04a72b35.js.map +0 -1
- package/dist/node/column-views.0840b115.css +0 -2
- package/dist/node/column-views.0840b115.css.map +0 -1
- package/dist/node/column-views.0af5912d.js +0 -2
- package/dist/node/column-views.0af5912d.js.map +0 -1
- package/dist/node/column-views.0bd15ee4.js +0 -2
- package/dist/node/column-views.0bd15ee4.js.map +0 -1
- package/dist/node/column-views.0d254fd3.js +0 -2
- package/dist/node/column-views.0d254fd3.js.map +0 -1
- package/dist/node/column-views.109cb0c8.js +0 -2
- package/dist/node/column-views.109cb0c8.js.map +0 -1
- package/dist/node/column-views.1261be59.js +0 -2
- package/dist/node/column-views.1261be59.js.map +0 -1
- package/dist/node/column-views.133855e6.js +0 -2
- package/dist/node/column-views.133855e6.js.map +0 -1
- package/dist/node/column-views.15b5cecc.js +0 -2
- package/dist/node/column-views.15b5cecc.js.map +0 -1
- package/dist/node/column-views.183745c0.js +0 -2
- package/dist/node/column-views.183745c0.js.map +0 -1
- package/dist/node/column-views.2e2158f5.js +0 -2
- package/dist/node/column-views.2e2158f5.js.map +0 -1
- package/dist/node/column-views.306acd3f.js +0 -2
- package/dist/node/column-views.306acd3f.js.map +0 -1
- package/dist/node/column-views.31153f29.js +0 -2
- package/dist/node/column-views.31153f29.js.map +0 -1
- package/dist/node/column-views.31da008b.js +0 -2
- package/dist/node/column-views.31da008b.js.map +0 -1
- package/dist/node/column-views.3a079e34.css +0 -2
- package/dist/node/column-views.3a079e34.css.map +0 -1
- package/dist/node/column-views.40e758b3.js +0 -2
- package/dist/node/column-views.40e758b3.js.map +0 -1
- package/dist/node/column-views.41876859.js +0 -2
- package/dist/node/column-views.41876859.js.map +0 -1
- package/dist/node/column-views.4a28d695.js +0 -2
- package/dist/node/column-views.4a28d695.js.map +0 -1
- package/dist/node/column-views.4ec769a6.js +0 -2
- package/dist/node/column-views.4ec769a6.js.map +0 -1
- package/dist/node/column-views.50a992d3.css +0 -2
- package/dist/node/column-views.50a992d3.css.map +0 -1
- package/dist/node/column-views.51fbed89.js +0 -2
- package/dist/node/column-views.51fbed89.js.map +0 -1
- package/dist/node/column-views.5950c8eb.js +0 -2
- package/dist/node/column-views.5950c8eb.js.map +0 -1
- package/dist/node/column-views.5987bc26.js +0 -2
- package/dist/node/column-views.5987bc26.js.map +0 -1
- package/dist/node/column-views.5a9331a9.js +0 -2
- package/dist/node/column-views.5a9331a9.js.map +0 -1
- package/dist/node/column-views.5bb858c9.js +0 -2
- package/dist/node/column-views.5bb858c9.js.map +0 -1
- package/dist/node/column-views.5c1b0eeb.css +0 -2
- package/dist/node/column-views.5c1b0eeb.css.map +0 -1
- package/dist/node/column-views.5cbada24.js +0 -2
- package/dist/node/column-views.5cbada24.js.map +0 -1
- package/dist/node/column-views.5fcd2be6.js +0 -2
- package/dist/node/column-views.5fcd2be6.js.map +0 -1
- package/dist/node/column-views.672b683c.js +0 -2
- package/dist/node/column-views.672b683c.js.map +0 -1
- package/dist/node/column-views.6a0a35e7.js +0 -2
- package/dist/node/column-views.6a0a35e7.js.map +0 -1
- package/dist/node/column-views.6a4c2100.css +0 -2
- package/dist/node/column-views.6a4c2100.css.map +0 -1
- package/dist/node/column-views.6a9da051.js +0 -2
- package/dist/node/column-views.6a9da051.js.map +0 -1
- package/dist/node/column-views.6bba8c57.js +0 -2
- package/dist/node/column-views.6bba8c57.js.map +0 -1
- package/dist/node/column-views.75ba0464.css +0 -2
- package/dist/node/column-views.75ba0464.css.map +0 -1
- package/dist/node/column-views.78b2d234.js +0 -2
- package/dist/node/column-views.78b2d234.js.map +0 -1
- package/dist/node/column-views.7b6e7d82.js +0 -2
- package/dist/node/column-views.7b6e7d82.js.map +0 -1
- package/dist/node/column-views.7b9bd06e.css +0 -2
- package/dist/node/column-views.7b9bd06e.css.map +0 -1
- package/dist/node/column-views.7d45bbeb.js +0 -2
- package/dist/node/column-views.7d45bbeb.js.map +0 -1
- package/dist/node/column-views.7f9c7448.js +0 -2
- package/dist/node/column-views.7f9c7448.js.map +0 -1
- package/dist/node/column-views.82cf7c0d.js +0 -2
- package/dist/node/column-views.82cf7c0d.js.map +0 -1
- package/dist/node/column-views.869c7199.js +0 -2
- package/dist/node/column-views.869c7199.js.map +0 -1
- package/dist/node/column-views.8bee789c.js +0 -2
- package/dist/node/column-views.8bee789c.js.map +0 -1
- package/dist/node/column-views.90c36c0b.js +0 -2
- package/dist/node/column-views.90c36c0b.js.map +0 -1
- package/dist/node/column-views.951e3e9a.js +0 -2
- package/dist/node/column-views.951e3e9a.js.map +0 -1
- package/dist/node/column-views.95411f1b.js +0 -2
- package/dist/node/column-views.95411f1b.js.map +0 -1
- package/dist/node/column-views.9cb13e51.css +0 -2
- package/dist/node/column-views.9cb13e51.css.map +0 -1
- package/dist/node/column-views.a0969fc8.js +0 -2
- package/dist/node/column-views.a0969fc8.js.map +0 -1
- package/dist/node/column-views.a2476e39.js +0 -2
- package/dist/node/column-views.a2476e39.js.map +0 -1
- package/dist/node/column-views.a8f5ee28.js +0 -2
- package/dist/node/column-views.a8f5ee28.js.map +0 -1
- package/dist/node/column-views.ad60c02f.js +0 -2
- package/dist/node/column-views.ad60c02f.js.map +0 -1
- package/dist/node/column-views.add5e42b.js +0 -2
- package/dist/node/column-views.add5e42b.js.map +0 -1
- package/dist/node/column-views.b169b4b5.css +0 -2
- package/dist/node/column-views.b169b4b5.css.map +0 -1
- package/dist/node/column-views.b2e5f823.js +0 -2
- package/dist/node/column-views.b2e5f823.js.map +0 -1
- package/dist/node/column-views.b57e5e6e.js +0 -2
- package/dist/node/column-views.b57e5e6e.js.map +0 -1
- package/dist/node/column-views.b762c9a8.js +0 -2
- package/dist/node/column-views.b762c9a8.js.map +0 -1
- package/dist/node/column-views.ba9108fe.js +0 -2
- package/dist/node/column-views.ba9108fe.js.map +0 -1
- package/dist/node/column-views.c16a19fb.js +0 -2
- package/dist/node/column-views.c16a19fb.js.map +0 -1
- package/dist/node/column-views.c3097d9a.js +0 -2
- package/dist/node/column-views.c3097d9a.js.map +0 -1
- package/dist/node/column-views.c4c15e2b.js +0 -2
- package/dist/node/column-views.c4c15e2b.js.map +0 -1
- package/dist/node/column-views.c651b684.js +0 -2
- package/dist/node/column-views.c651b684.js.map +0 -1
- package/dist/node/column-views.c968a185.css +0 -2
- package/dist/node/column-views.c968a185.css.map +0 -1
- package/dist/node/column-views.ccfb9afb.css +0 -2
- package/dist/node/column-views.ccfb9afb.css.map +0 -1
- package/dist/node/column-views.cdcce702.js +0 -2
- package/dist/node/column-views.cdcce702.js.map +0 -1
- package/dist/node/column-views.cf41a6d7.js +0 -2
- package/dist/node/column-views.cf41a6d7.js.map +0 -1
- package/dist/node/column-views.d22bf15c.js +0 -2
- package/dist/node/column-views.d22bf15c.js.map +0 -1
- package/dist/node/column-views.d737de1e.js +0 -2
- package/dist/node/column-views.d737de1e.js.map +0 -1
- package/dist/node/column-views.da902c44.js +0 -2
- package/dist/node/column-views.da902c44.js.map +0 -1
- package/dist/node/column-views.db3377d8.js +0 -2
- package/dist/node/column-views.db3377d8.js.map +0 -1
- package/dist/node/column-views.dbb4a46b.js +0 -2
- package/dist/node/column-views.dbb4a46b.js.map +0 -1
- package/dist/node/column-views.ddc6184e.css +0 -2
- package/dist/node/column-views.ddc6184e.css.map +0 -1
- package/dist/node/column-views.e0e20136.js +0 -2
- package/dist/node/column-views.e0e20136.js.map +0 -1
- package/dist/node/column-views.e2562224.js +0 -2
- package/dist/node/column-views.e2562224.js.map +0 -1
- package/dist/node/column-views.e6720522.js +0 -2
- package/dist/node/column-views.e6720522.js.map +0 -1
- package/dist/node/column-views.e7e26765.js +0 -2
- package/dist/node/column-views.e7e26765.js.map +0 -1
- package/dist/node/column-views.e93b3bdb.js +0 -2
- package/dist/node/column-views.e93b3bdb.js.map +0 -1
- package/dist/node/column-views.ebb44b7d.js +0 -2
- package/dist/node/column-views.ebb44b7d.js.map +0 -1
- package/dist/node/column-views.ec0087a2.js +0 -2
- package/dist/node/column-views.ec0087a2.js.map +0 -1
- package/dist/node/column-views.eea80478.js +0 -2
- package/dist/node/column-views.eea80478.js.map +0 -1
- package/dist/node/column-views.fb3ed7cc.js +0 -2
- package/dist/node/column-views.fb3ed7cc.js.map +0 -1
- package/dist/node/column-views.fc4c2c61.js +0 -2
- package/dist/node/column-views.fc4c2c61.js.map +0 -1
- package/dist/node/column-views.fcb243a2.js +0 -2
- package/dist/node/column-views.fcb243a2.js.map +0 -1
- package/dist/node/column-views.fea32686.js +0 -2
- package/dist/node/column-views.fea32686.js.map +0 -1
- package/dist/node/index.js +0 -2
- package/dist/node/index.js.map +0 -1
package/dist/notes.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import h from "@macrostrat/hyper";
|
|
2
|
+
import { SVG, NotesColumn } from "@macrostrat/column-components";
|
|
3
|
+
import { ColumnNotesProvider } from "./units/composite.js";
|
|
4
|
+
import { useMacrostratColumnData, useCompositeScale } from "./data-provider/store.js";
|
|
5
|
+
function ColumnNotes({
|
|
6
|
+
notes,
|
|
7
|
+
width = 200,
|
|
8
|
+
noteComponent,
|
|
9
|
+
paddingLeft = 60,
|
|
10
|
+
deltaConnectorAttachment,
|
|
11
|
+
focusedNoteComponent,
|
|
12
|
+
children
|
|
13
|
+
}) {
|
|
14
|
+
const { totalHeight } = useMacrostratColumnData();
|
|
15
|
+
const scale = useCompositeScale();
|
|
16
|
+
return h(
|
|
17
|
+
ColumnNotesProvider,
|
|
18
|
+
{
|
|
19
|
+
scale,
|
|
20
|
+
totalHeight,
|
|
21
|
+
pixelScale: -1
|
|
22
|
+
},
|
|
23
|
+
[
|
|
24
|
+
h(SVG, { width, height: totalHeight, paddingH: 4 }, [
|
|
25
|
+
h(NotesColumn, {
|
|
26
|
+
width,
|
|
27
|
+
notes,
|
|
28
|
+
noteComponent,
|
|
29
|
+
paddingLeft,
|
|
30
|
+
deltaConnectorAttachment,
|
|
31
|
+
focusedNoteComponent
|
|
32
|
+
})
|
|
33
|
+
]),
|
|
34
|
+
children
|
|
35
|
+
]
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
ColumnNotes
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=notes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notes.js","sources":["../src/notes.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\n\nimport { ColumnNotesProvider } from \"./units\";\n\nimport { NotesColumn, SVG } from \"@macrostrat/column-components\";\nimport { useCompositeScale, useMacrostratColumnData } from \"./data-provider\";\nimport type { ComponentType, ReactNode } from \"react\";\n\ninterface ColumnNotesProps {\n notes: any[];\n width?: number;\n noteComponent?: any;\n paddingLeft?: number;\n deltaConnectorAttachment?: number;\n children?: ReactNode;\n focusedNoteComponent?: ComponentType<any> | null;\n}\n\nexport function ColumnNotes({\n notes,\n width = 200,\n noteComponent,\n paddingLeft = 60,\n deltaConnectorAttachment,\n focusedNoteComponent,\n children,\n}: ColumnNotesProps) {\n const { totalHeight } = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n return h(\n ColumnNotesProvider,\n {\n scale,\n totalHeight,\n pixelScale: -1,\n },\n [\n h(SVG, { width, height: totalHeight, paddingH: 4 }, [\n h(NotesColumn, {\n width,\n notes,\n noteComponent,\n paddingLeft,\n deltaConnectorAttachment,\n focusedNoteComponent,\n }),\n ]),\n children,\n ],\n );\n}\n"],"names":[],"mappings":";;;;AAkBO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,QAAM,EAAE,YAAA,IAAgB,wBAAA;AACxB,QAAM,QAAQ,kBAAA;AAEd,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IAAA;AAAA,IAEd;AAAA,MACE,EAAE,KAAK,EAAE,OAAO,QAAQ,aAAa,UAAU,KAAK;AAAA,QAClD,EAAE,aAAa;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MAAA,CACF;AAAA,MACD;AAAA,IAAA;AAAA,EACF;AAEJ;"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const columnComponents = require("@macrostrat/column-components");
|
|
4
|
+
const utils = require("./utils.cjs");
|
|
5
|
+
const d3Scale = require("d3-scale");
|
|
6
|
+
const dynamicScales = require("./dynamic-scales.cjs");
|
|
7
|
+
const types = require("./types.cjs");
|
|
8
|
+
function buildCompositeScaleInfo(inputScales, unconformityHeight) {
|
|
9
|
+
let totalHeight = unconformityHeight / 2;
|
|
10
|
+
let lastSectionTopHeight = 0;
|
|
11
|
+
const packages2 = [];
|
|
12
|
+
for (const group of inputScales) {
|
|
13
|
+
const { domain, scale } = group;
|
|
14
|
+
const [b_age, t_age] = domain;
|
|
15
|
+
const key = `package-${b_age}-${t_age}`;
|
|
16
|
+
packages2.push({
|
|
17
|
+
...createPackageScale(group, totalHeight),
|
|
18
|
+
key,
|
|
19
|
+
offset: totalHeight,
|
|
20
|
+
// Unconformity height above this particular section
|
|
21
|
+
paddingTop: totalHeight - lastSectionTopHeight
|
|
22
|
+
});
|
|
23
|
+
const pixelHeight = Math.abs(scale(b_age) - scale(t_age));
|
|
24
|
+
lastSectionTopHeight = totalHeight + pixelHeight;
|
|
25
|
+
totalHeight = lastSectionTopHeight + unconformityHeight;
|
|
26
|
+
}
|
|
27
|
+
totalHeight += unconformityHeight / 2;
|
|
28
|
+
return {
|
|
29
|
+
totalHeight,
|
|
30
|
+
sections: packages2
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function finalizeSectionHeights(sections, unconformityHeight) {
|
|
34
|
+
const sectionScales = sections.map((d) => d.scaleInfo);
|
|
35
|
+
const { totalHeight, sections: packages } = buildCompositeScaleInfo(
|
|
36
|
+
sectionScales,
|
|
37
|
+
unconformityHeight
|
|
38
|
+
);
|
|
39
|
+
const sections1 = [];
|
|
40
|
+
for (const i in sections) {
|
|
41
|
+
const group = sections[i];
|
|
42
|
+
const scaleInfo = packages[i];
|
|
43
|
+
sections1.push({
|
|
44
|
+
...group,
|
|
45
|
+
key: scaleInfo.key,
|
|
46
|
+
scaleInfo
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
totalHeight,
|
|
51
|
+
sections: sections1
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function computeSectionHeights(sections, opts) {
|
|
55
|
+
return sections.map((group) => {
|
|
56
|
+
return addScaleToSection(group, opts);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function addScaleToSection(group, opts) {
|
|
60
|
+
const { t_age, b_age, t_pos, b_pos, units } = group;
|
|
61
|
+
let _range = null;
|
|
62
|
+
if (opts.axisType == columnComponents.ColumnAxisType.AGE) {
|
|
63
|
+
_range = [b_age, t_age];
|
|
64
|
+
} else {
|
|
65
|
+
_range = [b_pos, t_pos];
|
|
66
|
+
}
|
|
67
|
+
const scaleInfo = buildSectionScale(units, {
|
|
68
|
+
...opts,
|
|
69
|
+
domain: _range
|
|
70
|
+
});
|
|
71
|
+
return {
|
|
72
|
+
...group,
|
|
73
|
+
scaleInfo
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function buildSectionScale(data, opts) {
|
|
77
|
+
const {
|
|
78
|
+
targetUnitHeight = 20,
|
|
79
|
+
minPixelScale = 0.2,
|
|
80
|
+
axisType,
|
|
81
|
+
minSectionHeight,
|
|
82
|
+
scale,
|
|
83
|
+
hybridScale
|
|
84
|
+
} = opts;
|
|
85
|
+
const domain = opts.domain ?? findSectionHeightRange(data, axisType);
|
|
86
|
+
const dAge = Math.abs(domain[0] - domain[1]);
|
|
87
|
+
let _pixelScale = opts.pixelScale;
|
|
88
|
+
let pixelHeight;
|
|
89
|
+
if (hybridScale != null) {
|
|
90
|
+
if (hybridScale.type === types.HybridScaleType.EquidistantSurfaces) {
|
|
91
|
+
_pixelScale ??= targetUnitHeight;
|
|
92
|
+
}
|
|
93
|
+
return dynamicScales.buildHybridScale(hybridScale, data, domain, {
|
|
94
|
+
pixelOffset: 0,
|
|
95
|
+
pixelScale: _pixelScale
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
if (scale == null) {
|
|
99
|
+
if (_pixelScale == null) {
|
|
100
|
+
const avgAgeRange = findAverageUnitHeight(data, axisType);
|
|
101
|
+
_pixelScale = Math.max(targetUnitHeight / avgAgeRange, minPixelScale);
|
|
102
|
+
}
|
|
103
|
+
let height = dAge * _pixelScale;
|
|
104
|
+
const _minSectionHeight = minSectionHeight ?? targetUnitHeight ?? 0;
|
|
105
|
+
pixelHeight = Math.max(height, _minSectionHeight);
|
|
106
|
+
_pixelScale = pixelHeight / dAge;
|
|
107
|
+
} else {
|
|
108
|
+
pixelHeight = Math.abs(scale(domain[0]) - scale(domain[1]));
|
|
109
|
+
}
|
|
110
|
+
return createPackageScale(
|
|
111
|
+
{ scale, domain, pixelHeight, pixelScale: _pixelScale },
|
|
112
|
+
0
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
function createPackageScale(def, offset = 0) {
|
|
116
|
+
const { domain, pixelScale, pixelHeight, scale, heightScale } = def;
|
|
117
|
+
if (scale == null && pixelScale == null) {
|
|
118
|
+
throw new Error("Either scale or pixelScale must be provided");
|
|
119
|
+
}
|
|
120
|
+
let _scale;
|
|
121
|
+
if (scale == null) {
|
|
122
|
+
_scale = d3Scale.scaleLinear().domain([domain[1], domain[0]]).range([offset, pixelHeight + offset]);
|
|
123
|
+
} else {
|
|
124
|
+
const domain0 = scale.domain();
|
|
125
|
+
const range0 = scale.range();
|
|
126
|
+
_scale = scale.copy().domain(domain0).range(range0.map((d) => d + offset));
|
|
127
|
+
}
|
|
128
|
+
_scale.clamp();
|
|
129
|
+
let _heightScale = null;
|
|
130
|
+
if (heightScale != null) {
|
|
131
|
+
const range0 = scale.range();
|
|
132
|
+
_heightScale = heightScale.copy().range(range0.map((d) => d + offset));
|
|
133
|
+
_heightScale.clamp();
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
domain,
|
|
137
|
+
pixelScale,
|
|
138
|
+
pixelHeight,
|
|
139
|
+
scale: _scale,
|
|
140
|
+
// Internal details for hybrid scales. TODO: improve this
|
|
141
|
+
heightScale: _heightScale
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function findSectionHeightRange(data, axisType) {
|
|
145
|
+
if (axisType == null) {
|
|
146
|
+
throw new Error("Axis type is not set");
|
|
147
|
+
}
|
|
148
|
+
if (axisType === columnComponents.ColumnAxisType.AGE) {
|
|
149
|
+
const t_age = Math.min(...data.map((d) => d.t_age));
|
|
150
|
+
const b_age = Math.max(...data.map((d) => d.b_age));
|
|
151
|
+
return [b_age, t_age];
|
|
152
|
+
} else if (axisType == columnComponents.ColumnAxisType.DEPTH || axisType == columnComponents.ColumnAxisType.ORDINAL) {
|
|
153
|
+
const t_pos = Math.min(...data.map((d) => d.t_pos));
|
|
154
|
+
const b_pos = Math.max(...data.map((d) => d.b_pos));
|
|
155
|
+
return [b_pos, t_pos];
|
|
156
|
+
} else if (axisType == columnComponents.ColumnAxisType.HEIGHT) {
|
|
157
|
+
const t_pos = Math.max(...data.map((d) => d.t_pos));
|
|
158
|
+
const b_pos = Math.min(...data.map((d) => d.b_pos));
|
|
159
|
+
return [b_pos, t_pos];
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function findAverageUnitHeight(data, axisType) {
|
|
163
|
+
const unitHeights = data.map((d) => {
|
|
164
|
+
const [b_pos, t_pos] = utils.getUnitHeightRange(d, axisType);
|
|
165
|
+
return Math.abs(b_pos - t_pos);
|
|
166
|
+
});
|
|
167
|
+
return unitHeights.reduce((a, b) => a + b, 0) / unitHeights.length;
|
|
168
|
+
}
|
|
169
|
+
function createCompositeScale(sections, interpolateUnconformities = false) {
|
|
170
|
+
const scales = [];
|
|
171
|
+
let lastScale = null;
|
|
172
|
+
for (const section of sections) {
|
|
173
|
+
const _scale = section.scaleInfo.scale.copy().clamp(true);
|
|
174
|
+
scales.push(_scale);
|
|
175
|
+
if (lastScale != null && interpolateUnconformities) {
|
|
176
|
+
const lastDomain = lastScale.domain();
|
|
177
|
+
const lastRange = lastScale.range();
|
|
178
|
+
const currentDomain = _scale.domain();
|
|
179
|
+
const currentRange = _scale.range();
|
|
180
|
+
const interpScale = d3Scale.scaleLinear().domain([lastDomain[lastDomain.length - 1], currentDomain[0]]).range([lastRange[lastRange.length - 1], currentRange[0]]).clamp(true);
|
|
181
|
+
scales.push(interpScale);
|
|
182
|
+
}
|
|
183
|
+
lastScale = _scale;
|
|
184
|
+
}
|
|
185
|
+
const scale = (age) => {
|
|
186
|
+
for (const s of scales) {
|
|
187
|
+
const domain = s.domain();
|
|
188
|
+
if (domain[0] < domain[domain.length - 1] && age >= domain[0] && age <= domain[domain.length - 1]) {
|
|
189
|
+
return s(age);
|
|
190
|
+
} else if (age <= domain[0] && age >= domain[domain.length - 1]) {
|
|
191
|
+
return s(age);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return null;
|
|
195
|
+
};
|
|
196
|
+
scale.copy = () => {
|
|
197
|
+
return createCompositeScale(sections, interpolateUnconformities);
|
|
198
|
+
};
|
|
199
|
+
scale.domain = () => {
|
|
200
|
+
const vals = sections.flatMap((d) => d.scaleInfo.domain);
|
|
201
|
+
if (vals[0] < vals[vals.length - 1]) {
|
|
202
|
+
return [Math.min(...vals), Math.max(...vals)];
|
|
203
|
+
}
|
|
204
|
+
return [Math.max(...vals), Math.min(...vals)];
|
|
205
|
+
};
|
|
206
|
+
scale.invert = (pixelHeight) => {
|
|
207
|
+
for (const scale2 of scales) {
|
|
208
|
+
const range = scale2.range();
|
|
209
|
+
if (pixelHeight > Math.min(...range) && pixelHeight <= Math.max(...range)) {
|
|
210
|
+
console.log("Inverting scale at pixel height", pixelHeight);
|
|
211
|
+
return scale2.invert(pixelHeight);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
};
|
|
216
|
+
scale.clamp = (clamp) => {
|
|
217
|
+
for (const s of scales) {
|
|
218
|
+
s.clamp(clamp);
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
return scale;
|
|
222
|
+
}
|
|
223
|
+
function collapseUnconformitiesByPixelHeight(sections, threshold, opts) {
|
|
224
|
+
const newSections = [];
|
|
225
|
+
let currentSection = null;
|
|
226
|
+
for (const nextSection of sections) {
|
|
227
|
+
if (currentSection == null) {
|
|
228
|
+
currentSection = nextSection;
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
let heights;
|
|
232
|
+
let pxHeights;
|
|
233
|
+
if (opts.axisType !== columnComponents.ColumnAxisType.AGE) {
|
|
234
|
+
heights = [nextSection.t_pos, currentSection.b_pos];
|
|
235
|
+
} else {
|
|
236
|
+
heights = [nextSection.t_age, currentSection.b_age];
|
|
237
|
+
}
|
|
238
|
+
const _diff = (vals) => {
|
|
239
|
+
return Math.abs(vals[0] - vals[1]);
|
|
240
|
+
};
|
|
241
|
+
pxHeights = [
|
|
242
|
+
_diff(heights.map(nextSection.scaleInfo.scale)),
|
|
243
|
+
_diff(heights.map(currentSection.scaleInfo.scale))
|
|
244
|
+
];
|
|
245
|
+
const pxHeight = Math.min(...pxHeights);
|
|
246
|
+
if (pxHeight < threshold) {
|
|
247
|
+
let t_pos;
|
|
248
|
+
let b_pos;
|
|
249
|
+
if (opts.axisType == columnComponents.ColumnAxisType.AGE || opts.axisType == columnComponents.ColumnAxisType.DEPTH) {
|
|
250
|
+
t_pos = Math.min(currentSection.t_pos, nextSection.t_pos);
|
|
251
|
+
b_pos = Math.max(currentSection.b_pos, nextSection.b_pos);
|
|
252
|
+
} else {
|
|
253
|
+
t_pos = Math.max(currentSection.t_pos, nextSection.t_pos);
|
|
254
|
+
b_pos = Math.min(currentSection.b_pos, nextSection.b_pos);
|
|
255
|
+
}
|
|
256
|
+
const compositeSection0 = {
|
|
257
|
+
units: [...currentSection.units, ...nextSection.units],
|
|
258
|
+
section_id: [
|
|
259
|
+
...utils.ensureArray(currentSection.section_id),
|
|
260
|
+
...utils.ensureArray(nextSection.section_id)
|
|
261
|
+
],
|
|
262
|
+
t_age: Math.min(currentSection.t_age, nextSection.t_age),
|
|
263
|
+
b_age: Math.max(currentSection.b_age, nextSection.b_age),
|
|
264
|
+
t_pos,
|
|
265
|
+
b_pos
|
|
266
|
+
};
|
|
267
|
+
currentSection = addScaleToSection(compositeSection0, opts);
|
|
268
|
+
} else {
|
|
269
|
+
newSections.push(currentSection);
|
|
270
|
+
currentSection = nextSection;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
if (currentSection != null) {
|
|
274
|
+
newSections.push(currentSection);
|
|
275
|
+
}
|
|
276
|
+
return newSections;
|
|
277
|
+
}
|
|
278
|
+
exports.buildCompositeScaleInfo = buildCompositeScaleInfo;
|
|
279
|
+
exports.collapseUnconformitiesByPixelHeight = collapseUnconformitiesByPixelHeight;
|
|
280
|
+
exports.computeSectionHeights = computeSectionHeights;
|
|
281
|
+
exports.createCompositeScale = createCompositeScale;
|
|
282
|
+
exports.createPackageScale = createPackageScale;
|
|
283
|
+
exports.finalizeSectionHeights = finalizeSectionHeights;
|
|
284
|
+
//# sourceMappingURL=composite-scale.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composite-scale.cjs","sources":["../../src/prepare-units/composite-scale.ts"],"sourcesContent":["import { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { ensureArray, getUnitHeightRange } from \"./utils\";\nimport { ScaleContinuousNumeric, scaleLinear } from \"d3-scale\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport { buildHybridScale } from \"./dynamic-scales\";\nimport { ExtUnit, HybridScaleType, SectionInfo } from \"./types\";\nimport type {\n ColumnScaleOptions,\n CompositeColumnData,\n CompositeScaleData,\n PackageLayoutData,\n PackageScaleInfo,\n PackageScaleLayoutData,\n SectionScaleOptions,\n} from \"./types\";\n\n// Composite scale information augmented with units in each package\n\nexport function buildCompositeScaleInfo(\n inputScales: PackageScaleInfo[],\n unconformityHeight: number,\n): CompositeScaleData {\n /** Finalize the heights of sections, including the heights of unconformities\n * between them.\n */\n\n let totalHeight = unconformityHeight / 2;\n let lastSectionTopHeight = 0;\n\n const packages2: PackageScaleLayoutData[] = [];\n for (const group of inputScales) {\n const { domain, scale } = group;\n const [b_age, t_age] = domain;\n const key = `package-${b_age}-${t_age}`;\n\n packages2.push({\n ...createPackageScale(group, totalHeight),\n key,\n offset: totalHeight,\n // Unconformity height above this particular section\n paddingTop: totalHeight - lastSectionTopHeight,\n });\n\n const pixelHeight = Math.abs(scale(b_age) - scale(t_age));\n lastSectionTopHeight = totalHeight + pixelHeight;\n totalHeight = lastSectionTopHeight + unconformityHeight;\n }\n totalHeight += unconformityHeight / 2;\n return {\n totalHeight,\n sections: packages2,\n };\n}\n\nexport function finalizeSectionHeights<T extends UnitLong>(\n sections: SectionInfoWithScale<T>[],\n unconformityHeight: number,\n): CompositeColumnData<T> {\n /** Finalize the heights of sections, including the heights of unconformities\n * between them.\n */\n\n const sectionScales = sections.map((d) => d.scaleInfo);\n\n const { totalHeight, sections: packages } = buildCompositeScaleInfo(\n sectionScales,\n unconformityHeight,\n );\n\n // This could perhaps be simplified.\n const sections1: PackageLayoutData<T>[] = [];\n for (const i in sections) {\n const group = sections[i];\n const scaleInfo = packages[i];\n sections1.push({\n ...group,\n key: scaleInfo.key,\n scaleInfo,\n });\n }\n return {\n totalHeight,\n sections: sections1,\n };\n}\n\nexport interface SectionInfoWithScale<\n T extends UnitLong = ExtUnit,\n> extends SectionInfo<T> {\n scaleInfo: PackageScaleInfo;\n}\n\nexport function computeSectionHeights<T extends UnitLong>(\n sections: SectionInfo<T>[],\n opts: ColumnScaleOptions,\n): SectionInfoWithScale<T>[] {\n return sections.map((group) => {\n return addScaleToSection<T>(group, opts);\n });\n}\n\nfunction addScaleToSection<T extends UnitLong = ExtUnit>(\n group: SectionInfo<T>,\n opts: ColumnScaleOptions,\n): SectionInfoWithScale<T> {\n const { t_age, b_age, t_pos, b_pos, units } = group;\n let _range = null;\n // if t_age and b_age are set for a group, use them to define the range...\n if (opts.axisType == ColumnAxisType.AGE) {\n _range = [b_age, t_age];\n } else {\n _range = [b_pos, t_pos];\n }\n\n const scaleInfo = buildSectionScale<T>(units, {\n ...opts,\n domain: _range,\n });\n\n return {\n ...group,\n scaleInfo,\n };\n}\n\nfunction buildSectionScale<T extends UnitLong>(\n data: T[],\n opts: SectionScaleOptions,\n): PackageScaleInfo {\n const {\n targetUnitHeight = 20,\n minPixelScale = 0.2,\n axisType,\n minSectionHeight,\n scale,\n hybridScale,\n } = opts;\n const domain = opts.domain ?? findSectionHeightRange(data, axisType);\n\n const dAge = Math.abs(domain[0] - domain[1]);\n\n let _pixelScale = opts.pixelScale;\n let pixelHeight: number;\n\n if (hybridScale != null) {\n /** In an equidistant surfaces scale, we want to determine the heights of surfaces\n * and then distribute units evenly between them.\n * This is somewhat like an ordinal scale\n */\n if (hybridScale.type === HybridScaleType.EquidistantSurfaces) {\n _pixelScale ??= targetUnitHeight;\n }\n\n return buildHybridScale(hybridScale, data, domain, {\n pixelOffset: 0,\n pixelScale: _pixelScale,\n });\n }\n\n if (scale == null) {\n if (_pixelScale == null) {\n const avgAgeRange = findAverageUnitHeight(data, axisType);\n // Get pixel height necessary to render average unit at target height\n _pixelScale = Math.max(targetUnitHeight / avgAgeRange, minPixelScale);\n\n // OLD METHOD that cares about overall section height vs. individual unit height\n // 0.2 pixel per myr is the floor scale\n //const targetHeight = targetUnitHeight * data.length;\n // 1 pixel per myr is the floor scale\n //_pixelScale = Math.max(targetHeight / dAge, minPixelScale);\n }\n\n let height = dAge * _pixelScale;\n // If height is less than minSectionHeight, set it to minSectionHeight\n const _minSectionHeight = minSectionHeight ?? targetUnitHeight ?? 0;\n pixelHeight = Math.max(height, _minSectionHeight);\n _pixelScale = pixelHeight / dAge;\n } else {\n // If a scale is provided, use it to compute pixel height\n pixelHeight = Math.abs(scale(domain[0]) - scale(domain[1]));\n }\n\n return createPackageScale(\n { scale, domain, pixelHeight, pixelScale: _pixelScale },\n 0,\n );\n}\n\nexport function createPackageScale(\n def: PackageScaleInfo,\n offset: number = 0,\n): PackageScaleInfo {\n /** Build a section scale */\n // Domain should be oriented from bottom to top, but scale is oriented from top to bottom\n const { domain, pixelScale, pixelHeight, scale, heightScale } = def;\n\n if (scale == null && pixelScale == null) {\n throw new Error(\"Either scale or pixelScale must be provided\");\n }\n\n let _scale: ScaleContinuousNumeric<number, number>;\n if (scale == null) {\n _scale = scaleLinear()\n .domain([domain[1], domain[0]])\n .range([offset, pixelHeight + offset]);\n } else {\n const domain0 = scale.domain();\n const range0 = scale.range();\n _scale = scale\n .copy()\n .domain(domain0)\n .range(range0.map((d) => d + offset));\n }\n\n _scale.clamp();\n\n let _heightScale = null;\n if (heightScale != null) {\n // Adjust height scale as well\n const range0 = scale.range();\n _heightScale = heightScale.copy().range(range0.map((d) => d + offset));\n _heightScale.clamp();\n }\n\n return {\n domain,\n pixelScale,\n pixelHeight,\n scale: _scale,\n // Internal details for hybrid scales. TODO: improve this\n heightScale: _heightScale,\n };\n}\n\nfunction findSectionHeightRange(\n data: UnitLong[],\n axisType: ColumnAxisType,\n): [number, number] {\n if (axisType == null) {\n throw new Error(\"Axis type is not set\");\n }\n if (axisType === ColumnAxisType.AGE) {\n const t_age = Math.min(...data.map((d) => d.t_age));\n const b_age = Math.max(...data.map((d) => d.b_age));\n return [b_age, t_age];\n } else if (\n axisType == ColumnAxisType.DEPTH ||\n axisType == ColumnAxisType.ORDINAL\n ) {\n const t_pos = Math.min(...data.map((d) => d.t_pos));\n const b_pos = Math.max(...data.map((d) => d.b_pos));\n return [b_pos, t_pos];\n } else if (axisType == ColumnAxisType.HEIGHT) {\n const t_pos = Math.max(...data.map((d) => d.t_pos));\n const b_pos = Math.min(...data.map((d) => d.b_pos));\n return [b_pos, t_pos];\n }\n}\n\nfunction findAverageUnitHeight(\n data: UnitLong[],\n axisType: ColumnAxisType,\n): number {\n const unitHeights = data.map((d) => {\n const [b_pos, t_pos] = getUnitHeightRange(d, axisType);\n return Math.abs(b_pos - t_pos);\n });\n return unitHeights.reduce((a, b) => a + b, 0) / unitHeights.length;\n}\n\nexport interface CompositeColumnScale {\n (age: number): number | null;\n copy(): CompositeColumnScale;\n domain(): [number, number];\n invert(pixelHeight: number): number | null;\n clamp(clamp: boolean): void;\n}\n\nexport function createCompositeScale(\n sections: PackageLayoutData[],\n interpolateUnconformities: boolean = false,\n): CompositeColumnScale {\n /** Create a scale that works across multiple packages */\n\n const scales: ScaleContinuousNumeric<number, number>[] = [];\n\n let lastScale: ScaleContinuousNumeric<number, number> | null = null;\n for (const section of sections) {\n const _scale = section.scaleInfo.scale.copy().clamp(true);\n scales.push(_scale);\n if (lastScale != null && interpolateUnconformities) {\n // Add a new scale that interpolates between lastScale and _scale\n const lastDomain = lastScale.domain();\n const lastRange = lastScale.range();\n const currentDomain = _scale.domain();\n const currentRange = _scale.range();\n\n const interpScale = scaleLinear()\n .domain([lastDomain[lastDomain.length - 1], currentDomain[0]])\n .range([lastRange[lastRange.length - 1], currentRange[0]])\n .clamp(true);\n scales.push(interpScale);\n }\n lastScale = _scale;\n }\n\n const scale: CompositeColumnScale = (age) => {\n for (const s of scales) {\n const domain = s.domain();\n if (\n domain[0] < domain[domain.length - 1] &&\n age >= domain[0] &&\n age <= domain[domain.length - 1]\n ) {\n // Age axes\n return s(age);\n } else if (age <= domain[0] && age >= domain[domain.length - 1]) {\n // Normal axes like height\n return s(age);\n }\n }\n return null;\n };\n\n scale.copy = () => {\n return createCompositeScale(sections, interpolateUnconformities);\n };\n\n scale.domain = () => {\n /** Return the domain of the scale */\n const vals = sections.flatMap((d) => d.scaleInfo.domain);\n if (vals[0] < vals[vals.length - 1]) {\n // age axes\n return [Math.min(...vals), Math.max(...vals)];\n }\n // Normal axes like height\n return [Math.max(...vals), Math.min(...vals)];\n };\n\n scale.invert = (pixelHeight) => {\n /** Invert the scale to get the age at a given pixel height */\n // Iterate through the sections to find the correct one\n for (const scale of scales) {\n const range = scale.range();\n if (\n pixelHeight > Math.min(...range) &&\n pixelHeight <= Math.max(...range)\n ) {\n console.log(\"Inverting scale at pixel height\", pixelHeight);\n return scale.invert(pixelHeight);\n }\n }\n return null;\n };\n\n scale.clamp = (clamp: boolean) => {\n /** Clamp all constituent scales */\n for (const s of scales) {\n s.clamp(clamp);\n }\n };\n\n return scale;\n}\n\n/** Collapse sections separated by unconformities that are smaller than a given pixel height. */\nexport function collapseUnconformitiesByPixelHeight<T extends UnitLong>(\n sections: SectionInfoWithScale<T>[],\n threshold: number,\n opts: ColumnScaleOptions,\n): SectionInfoWithScale<T>[] {\n const newSections = [];\n let currentSection: SectionInfoWithScale<T> | null = null;\n for (const nextSection of sections) {\n if (currentSection == null) {\n currentSection = nextSection;\n continue;\n }\n let heights: [number, number];\n let pxHeights: [number, number];\n if (opts.axisType !== ColumnAxisType.AGE) {\n heights = [nextSection.t_pos, currentSection.b_pos];\n } else {\n heights = [nextSection.t_age, currentSection.b_age];\n }\n\n const _diff = (vals: number[]) => {\n return Math.abs(vals[0] - vals[1]);\n };\n\n pxHeights = [\n _diff(heights.map(nextSection.scaleInfo.scale)),\n _diff(heights.map(currentSection.scaleInfo.scale)),\n ];\n\n const pxHeight = Math.min(...pxHeights);\n\n if (pxHeight < threshold) {\n let t_pos: number;\n let b_pos: number;\n if (\n opts.axisType == ColumnAxisType.AGE ||\n opts.axisType == ColumnAxisType.DEPTH\n ) {\n t_pos = Math.min(currentSection.t_pos, nextSection.t_pos);\n b_pos = Math.max(currentSection.b_pos, nextSection.b_pos);\n } else {\n t_pos = Math.max(currentSection.t_pos, nextSection.t_pos);\n b_pos = Math.min(currentSection.b_pos, nextSection.b_pos);\n }\n\n // We need to merge the sections\n const compositeSection0: SectionInfo<T> = {\n units: [...currentSection.units, ...nextSection.units],\n section_id: [\n ...ensureArray(currentSection.section_id),\n ...ensureArray(nextSection.section_id),\n ],\n t_age: Math.min(currentSection.t_age, nextSection.t_age),\n b_age: Math.max(currentSection.b_age, nextSection.b_age),\n t_pos,\n b_pos,\n };\n\n currentSection = addScaleToSection(compositeSection0, opts);\n } else {\n // We need to keep the section\n newSections.push(currentSection);\n currentSection = nextSection;\n }\n }\n if (currentSection != null) {\n newSections.push(currentSection);\n }\n\n return newSections;\n}\n"],"names":["ColumnAxisType","HybridScaleType","buildHybridScale","scaleLinear","getUnitHeightRange","scale","ensureArray"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { UnitLong } from '@macrostrat/api-types';
|
|
2
|
+
import { ExtUnit, SectionInfo, ColumnScaleOptions, CompositeColumnData, CompositeScaleData, PackageLayoutData, PackageScaleInfo } from './types';
|
|
3
|
+
export declare function buildCompositeScaleInfo(inputScales: PackageScaleInfo[], unconformityHeight: number): CompositeScaleData;
|
|
4
|
+
export declare function finalizeSectionHeights<T extends UnitLong>(sections: SectionInfoWithScale<T>[], unconformityHeight: number): CompositeColumnData<T>;
|
|
5
|
+
export interface SectionInfoWithScale<T extends UnitLong = ExtUnit> extends SectionInfo<T> {
|
|
6
|
+
scaleInfo: PackageScaleInfo;
|
|
7
|
+
}
|
|
8
|
+
export declare function computeSectionHeights<T extends UnitLong>(sections: SectionInfo<T>[], opts: ColumnScaleOptions): SectionInfoWithScale<T>[];
|
|
9
|
+
export declare function createPackageScale(def: PackageScaleInfo, offset?: number): PackageScaleInfo;
|
|
10
|
+
export interface CompositeColumnScale {
|
|
11
|
+
(age: number): number | null;
|
|
12
|
+
copy(): CompositeColumnScale;
|
|
13
|
+
domain(): [number, number];
|
|
14
|
+
invert(pixelHeight: number): number | null;
|
|
15
|
+
clamp(clamp: boolean): void;
|
|
16
|
+
}
|
|
17
|
+
export declare function createCompositeScale(sections: PackageLayoutData[], interpolateUnconformities?: boolean): CompositeColumnScale;
|
|
18
|
+
/** Collapse sections separated by unconformities that are smaller than a given pixel height. */
|
|
19
|
+
export declare function collapseUnconformitiesByPixelHeight<T extends UnitLong>(sections: SectionInfoWithScale<T>[], threshold: number, opts: ColumnScaleOptions): SectionInfoWithScale<T>[];
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { ColumnAxisType } from "@macrostrat/column-components";
|
|
2
|
+
import { ensureArray, getUnitHeightRange } from "./utils.js";
|
|
3
|
+
import { scaleLinear } from "d3-scale";
|
|
4
|
+
import { buildHybridScale } from "./dynamic-scales.js";
|
|
5
|
+
import { HybridScaleType } from "./types.js";
|
|
6
|
+
function buildCompositeScaleInfo(inputScales, unconformityHeight) {
|
|
7
|
+
let totalHeight = unconformityHeight / 2;
|
|
8
|
+
let lastSectionTopHeight = 0;
|
|
9
|
+
const packages2 = [];
|
|
10
|
+
for (const group of inputScales) {
|
|
11
|
+
const { domain, scale } = group;
|
|
12
|
+
const [b_age, t_age] = domain;
|
|
13
|
+
const key = `package-${b_age}-${t_age}`;
|
|
14
|
+
packages2.push({
|
|
15
|
+
...createPackageScale(group, totalHeight),
|
|
16
|
+
key,
|
|
17
|
+
offset: totalHeight,
|
|
18
|
+
// Unconformity height above this particular section
|
|
19
|
+
paddingTop: totalHeight - lastSectionTopHeight
|
|
20
|
+
});
|
|
21
|
+
const pixelHeight = Math.abs(scale(b_age) - scale(t_age));
|
|
22
|
+
lastSectionTopHeight = totalHeight + pixelHeight;
|
|
23
|
+
totalHeight = lastSectionTopHeight + unconformityHeight;
|
|
24
|
+
}
|
|
25
|
+
totalHeight += unconformityHeight / 2;
|
|
26
|
+
return {
|
|
27
|
+
totalHeight,
|
|
28
|
+
sections: packages2
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function finalizeSectionHeights(sections, unconformityHeight) {
|
|
32
|
+
const sectionScales = sections.map((d) => d.scaleInfo);
|
|
33
|
+
const { totalHeight, sections: packages } = buildCompositeScaleInfo(
|
|
34
|
+
sectionScales,
|
|
35
|
+
unconformityHeight
|
|
36
|
+
);
|
|
37
|
+
const sections1 = [];
|
|
38
|
+
for (const i in sections) {
|
|
39
|
+
const group = sections[i];
|
|
40
|
+
const scaleInfo = packages[i];
|
|
41
|
+
sections1.push({
|
|
42
|
+
...group,
|
|
43
|
+
key: scaleInfo.key,
|
|
44
|
+
scaleInfo
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
totalHeight,
|
|
49
|
+
sections: sections1
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function computeSectionHeights(sections, opts) {
|
|
53
|
+
return sections.map((group) => {
|
|
54
|
+
return addScaleToSection(group, opts);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function addScaleToSection(group, opts) {
|
|
58
|
+
const { t_age, b_age, t_pos, b_pos, units } = group;
|
|
59
|
+
let _range = null;
|
|
60
|
+
if (opts.axisType == ColumnAxisType.AGE) {
|
|
61
|
+
_range = [b_age, t_age];
|
|
62
|
+
} else {
|
|
63
|
+
_range = [b_pos, t_pos];
|
|
64
|
+
}
|
|
65
|
+
const scaleInfo = buildSectionScale(units, {
|
|
66
|
+
...opts,
|
|
67
|
+
domain: _range
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
...group,
|
|
71
|
+
scaleInfo
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function buildSectionScale(data, opts) {
|
|
75
|
+
const {
|
|
76
|
+
targetUnitHeight = 20,
|
|
77
|
+
minPixelScale = 0.2,
|
|
78
|
+
axisType,
|
|
79
|
+
minSectionHeight,
|
|
80
|
+
scale,
|
|
81
|
+
hybridScale
|
|
82
|
+
} = opts;
|
|
83
|
+
const domain = opts.domain ?? findSectionHeightRange(data, axisType);
|
|
84
|
+
const dAge = Math.abs(domain[0] - domain[1]);
|
|
85
|
+
let _pixelScale = opts.pixelScale;
|
|
86
|
+
let pixelHeight;
|
|
87
|
+
if (hybridScale != null) {
|
|
88
|
+
if (hybridScale.type === HybridScaleType.EquidistantSurfaces) {
|
|
89
|
+
_pixelScale ??= targetUnitHeight;
|
|
90
|
+
}
|
|
91
|
+
return buildHybridScale(hybridScale, data, domain, {
|
|
92
|
+
pixelOffset: 0,
|
|
93
|
+
pixelScale: _pixelScale
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
if (scale == null) {
|
|
97
|
+
if (_pixelScale == null) {
|
|
98
|
+
const avgAgeRange = findAverageUnitHeight(data, axisType);
|
|
99
|
+
_pixelScale = Math.max(targetUnitHeight / avgAgeRange, minPixelScale);
|
|
100
|
+
}
|
|
101
|
+
let height = dAge * _pixelScale;
|
|
102
|
+
const _minSectionHeight = minSectionHeight ?? targetUnitHeight ?? 0;
|
|
103
|
+
pixelHeight = Math.max(height, _minSectionHeight);
|
|
104
|
+
_pixelScale = pixelHeight / dAge;
|
|
105
|
+
} else {
|
|
106
|
+
pixelHeight = Math.abs(scale(domain[0]) - scale(domain[1]));
|
|
107
|
+
}
|
|
108
|
+
return createPackageScale(
|
|
109
|
+
{ scale, domain, pixelHeight, pixelScale: _pixelScale },
|
|
110
|
+
0
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
function createPackageScale(def, offset = 0) {
|
|
114
|
+
const { domain, pixelScale, pixelHeight, scale, heightScale } = def;
|
|
115
|
+
if (scale == null && pixelScale == null) {
|
|
116
|
+
throw new Error("Either scale or pixelScale must be provided");
|
|
117
|
+
}
|
|
118
|
+
let _scale;
|
|
119
|
+
if (scale == null) {
|
|
120
|
+
_scale = scaleLinear().domain([domain[1], domain[0]]).range([offset, pixelHeight + offset]);
|
|
121
|
+
} else {
|
|
122
|
+
const domain0 = scale.domain();
|
|
123
|
+
const range0 = scale.range();
|
|
124
|
+
_scale = scale.copy().domain(domain0).range(range0.map((d) => d + offset));
|
|
125
|
+
}
|
|
126
|
+
_scale.clamp();
|
|
127
|
+
let _heightScale = null;
|
|
128
|
+
if (heightScale != null) {
|
|
129
|
+
const range0 = scale.range();
|
|
130
|
+
_heightScale = heightScale.copy().range(range0.map((d) => d + offset));
|
|
131
|
+
_heightScale.clamp();
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
domain,
|
|
135
|
+
pixelScale,
|
|
136
|
+
pixelHeight,
|
|
137
|
+
scale: _scale,
|
|
138
|
+
// Internal details for hybrid scales. TODO: improve this
|
|
139
|
+
heightScale: _heightScale
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function findSectionHeightRange(data, axisType) {
|
|
143
|
+
if (axisType == null) {
|
|
144
|
+
throw new Error("Axis type is not set");
|
|
145
|
+
}
|
|
146
|
+
if (axisType === ColumnAxisType.AGE) {
|
|
147
|
+
const t_age = Math.min(...data.map((d) => d.t_age));
|
|
148
|
+
const b_age = Math.max(...data.map((d) => d.b_age));
|
|
149
|
+
return [b_age, t_age];
|
|
150
|
+
} else if (axisType == ColumnAxisType.DEPTH || axisType == ColumnAxisType.ORDINAL) {
|
|
151
|
+
const t_pos = Math.min(...data.map((d) => d.t_pos));
|
|
152
|
+
const b_pos = Math.max(...data.map((d) => d.b_pos));
|
|
153
|
+
return [b_pos, t_pos];
|
|
154
|
+
} else if (axisType == ColumnAxisType.HEIGHT) {
|
|
155
|
+
const t_pos = Math.max(...data.map((d) => d.t_pos));
|
|
156
|
+
const b_pos = Math.min(...data.map((d) => d.b_pos));
|
|
157
|
+
return [b_pos, t_pos];
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function findAverageUnitHeight(data, axisType) {
|
|
161
|
+
const unitHeights = data.map((d) => {
|
|
162
|
+
const [b_pos, t_pos] = getUnitHeightRange(d, axisType);
|
|
163
|
+
return Math.abs(b_pos - t_pos);
|
|
164
|
+
});
|
|
165
|
+
return unitHeights.reduce((a, b) => a + b, 0) / unitHeights.length;
|
|
166
|
+
}
|
|
167
|
+
function createCompositeScale(sections, interpolateUnconformities = false) {
|
|
168
|
+
const scales = [];
|
|
169
|
+
let lastScale = null;
|
|
170
|
+
for (const section of sections) {
|
|
171
|
+
const _scale = section.scaleInfo.scale.copy().clamp(true);
|
|
172
|
+
scales.push(_scale);
|
|
173
|
+
if (lastScale != null && interpolateUnconformities) {
|
|
174
|
+
const lastDomain = lastScale.domain();
|
|
175
|
+
const lastRange = lastScale.range();
|
|
176
|
+
const currentDomain = _scale.domain();
|
|
177
|
+
const currentRange = _scale.range();
|
|
178
|
+
const interpScale = scaleLinear().domain([lastDomain[lastDomain.length - 1], currentDomain[0]]).range([lastRange[lastRange.length - 1], currentRange[0]]).clamp(true);
|
|
179
|
+
scales.push(interpScale);
|
|
180
|
+
}
|
|
181
|
+
lastScale = _scale;
|
|
182
|
+
}
|
|
183
|
+
const scale = (age) => {
|
|
184
|
+
for (const s of scales) {
|
|
185
|
+
const domain = s.domain();
|
|
186
|
+
if (domain[0] < domain[domain.length - 1] && age >= domain[0] && age <= domain[domain.length - 1]) {
|
|
187
|
+
return s(age);
|
|
188
|
+
} else if (age <= domain[0] && age >= domain[domain.length - 1]) {
|
|
189
|
+
return s(age);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return null;
|
|
193
|
+
};
|
|
194
|
+
scale.copy = () => {
|
|
195
|
+
return createCompositeScale(sections, interpolateUnconformities);
|
|
196
|
+
};
|
|
197
|
+
scale.domain = () => {
|
|
198
|
+
const vals = sections.flatMap((d) => d.scaleInfo.domain);
|
|
199
|
+
if (vals[0] < vals[vals.length - 1]) {
|
|
200
|
+
return [Math.min(...vals), Math.max(...vals)];
|
|
201
|
+
}
|
|
202
|
+
return [Math.max(...vals), Math.min(...vals)];
|
|
203
|
+
};
|
|
204
|
+
scale.invert = (pixelHeight) => {
|
|
205
|
+
for (const scale2 of scales) {
|
|
206
|
+
const range = scale2.range();
|
|
207
|
+
if (pixelHeight > Math.min(...range) && pixelHeight <= Math.max(...range)) {
|
|
208
|
+
console.log("Inverting scale at pixel height", pixelHeight);
|
|
209
|
+
return scale2.invert(pixelHeight);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return null;
|
|
213
|
+
};
|
|
214
|
+
scale.clamp = (clamp) => {
|
|
215
|
+
for (const s of scales) {
|
|
216
|
+
s.clamp(clamp);
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
return scale;
|
|
220
|
+
}
|
|
221
|
+
function collapseUnconformitiesByPixelHeight(sections, threshold, opts) {
|
|
222
|
+
const newSections = [];
|
|
223
|
+
let currentSection = null;
|
|
224
|
+
for (const nextSection of sections) {
|
|
225
|
+
if (currentSection == null) {
|
|
226
|
+
currentSection = nextSection;
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
let heights;
|
|
230
|
+
let pxHeights;
|
|
231
|
+
if (opts.axisType !== ColumnAxisType.AGE) {
|
|
232
|
+
heights = [nextSection.t_pos, currentSection.b_pos];
|
|
233
|
+
} else {
|
|
234
|
+
heights = [nextSection.t_age, currentSection.b_age];
|
|
235
|
+
}
|
|
236
|
+
const _diff = (vals) => {
|
|
237
|
+
return Math.abs(vals[0] - vals[1]);
|
|
238
|
+
};
|
|
239
|
+
pxHeights = [
|
|
240
|
+
_diff(heights.map(nextSection.scaleInfo.scale)),
|
|
241
|
+
_diff(heights.map(currentSection.scaleInfo.scale))
|
|
242
|
+
];
|
|
243
|
+
const pxHeight = Math.min(...pxHeights);
|
|
244
|
+
if (pxHeight < threshold) {
|
|
245
|
+
let t_pos;
|
|
246
|
+
let b_pos;
|
|
247
|
+
if (opts.axisType == ColumnAxisType.AGE || opts.axisType == ColumnAxisType.DEPTH) {
|
|
248
|
+
t_pos = Math.min(currentSection.t_pos, nextSection.t_pos);
|
|
249
|
+
b_pos = Math.max(currentSection.b_pos, nextSection.b_pos);
|
|
250
|
+
} else {
|
|
251
|
+
t_pos = Math.max(currentSection.t_pos, nextSection.t_pos);
|
|
252
|
+
b_pos = Math.min(currentSection.b_pos, nextSection.b_pos);
|
|
253
|
+
}
|
|
254
|
+
const compositeSection0 = {
|
|
255
|
+
units: [...currentSection.units, ...nextSection.units],
|
|
256
|
+
section_id: [
|
|
257
|
+
...ensureArray(currentSection.section_id),
|
|
258
|
+
...ensureArray(nextSection.section_id)
|
|
259
|
+
],
|
|
260
|
+
t_age: Math.min(currentSection.t_age, nextSection.t_age),
|
|
261
|
+
b_age: Math.max(currentSection.b_age, nextSection.b_age),
|
|
262
|
+
t_pos,
|
|
263
|
+
b_pos
|
|
264
|
+
};
|
|
265
|
+
currentSection = addScaleToSection(compositeSection0, opts);
|
|
266
|
+
} else {
|
|
267
|
+
newSections.push(currentSection);
|
|
268
|
+
currentSection = nextSection;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (currentSection != null) {
|
|
272
|
+
newSections.push(currentSection);
|
|
273
|
+
}
|
|
274
|
+
return newSections;
|
|
275
|
+
}
|
|
276
|
+
export {
|
|
277
|
+
buildCompositeScaleInfo,
|
|
278
|
+
collapseUnconformitiesByPixelHeight,
|
|
279
|
+
computeSectionHeights,
|
|
280
|
+
createCompositeScale,
|
|
281
|
+
createPackageScale,
|
|
282
|
+
finalizeSectionHeights
|
|
283
|
+
};
|
|
284
|
+
//# sourceMappingURL=composite-scale.js.map
|