@macrostrat/column-views 2.4.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/facets/measurements/sgp.ts +10 -3
- 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.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.905ddea0.js +0 -9
- package/dist/esm/column-views.905ddea0.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.b2142cd8.js +0 -13
- package/dist/esm/column-views.b2142cd8.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.b88d4bbe.js +0 -61
- package/dist/esm/column-views.b88d4bbe.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.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.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.0619e2da.js +0 -2
- package/dist/node/column-views.0619e2da.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.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.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.aff55599.js +0 -2
- package/dist/node/column-views.aff55599.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.f2e82230.js +0 -2
- package/dist/node/column-views.f2e82230.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.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
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useAPIResult } from "@macrostrat/ui-components";
|
|
2
|
+
function useDetritalMeasurements(columnArgs) {
|
|
3
|
+
const params = {
|
|
4
|
+
...columnArgs,
|
|
5
|
+
measure_phase: "zircon",
|
|
6
|
+
response: "long",
|
|
7
|
+
show_values: true,
|
|
8
|
+
// Other isotope systems are organized separately
|
|
9
|
+
measurement: "207Pb-206Pb"
|
|
10
|
+
};
|
|
11
|
+
const res = useAPIResult(
|
|
12
|
+
"/measurements",
|
|
13
|
+
params,
|
|
14
|
+
columnArgs
|
|
15
|
+
);
|
|
16
|
+
if (res == null) return null;
|
|
17
|
+
return res;
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
useDetritalMeasurements
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../src/facets/detrital-zircon/provider.ts"],"sourcesContent":["import { group } from \"d3-array\";\nimport { useAPIResult } from \"@macrostrat/ui-components\";\n\nexport interface MeasurementInfo {\n measurement_id: number;\n measuremeta_id: number;\n measurement: string;\n measure_units: string;\n measure_phase: string;\n method: string;\n n: number;\n ref_id: number;\n sample_name: string;\n geo_unit: string;\n samp_lith: string;\n samp_lith_id: number;\n samp_desc: string;\n samp_age: string;\n lat: number;\n lng: number;\n unit_id: number;\n unit_rel_pos?: any;\n col_id: number;\n strat_name_id: number;\n match_basis: string;\n ref: string;\n measure_value: number[];\n measure_error: number[];\n measure_position: any[];\n measure_n: number[];\n sample_no: string[];\n error_units: string;\n}\n\nexport function useDetritalMeasurements(columnArgs) {\n const params = {\n ...columnArgs,\n measure_phase: \"zircon\",\n response: \"long\",\n show_values: true,\n // Other isotope systems are organized separately\n measurement: \"207Pb-206Pb\",\n };\n const res: MeasurementInfo[] = useAPIResult(\n \"/measurements\",\n params,\n columnArgs,\n );\n if (res == null) return null;\n return res;\n}\n"],"names":[],"mappings":";AAkCO,SAAS,wBAAwB,YAAY;AAClD,QAAM,SAAS;AAAA,IACb,GAAG;AAAA,IACH,eAAe;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA;AAAA,IAEb,aAAa;AAAA,EAAA;AAEf,QAAM,MAAyB;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF,MAAI,OAAO,KAAM,QAAO;AACxB,SAAO;AACT;"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const h$1 = require("@macrostrat/hyper");
|
|
4
|
+
const provider = require("./provider.cjs");
|
|
5
|
+
const columnComponents = require("@macrostrat/column-components");
|
|
6
|
+
const taxonRanges_module = require("./taxon-ranges.module.sass.cjs");
|
|
7
|
+
const d3Scale = require("d3-scale");
|
|
8
|
+
const base = require("../measurements/base.cjs");
|
|
9
|
+
const store = require("../../data-provider/store.cjs");
|
|
10
|
+
const utils = require("../../prepare-units/utils.cjs");
|
|
11
|
+
const h = h$1.styled(taxonRanges_module.default);
|
|
12
|
+
function PBDBFossilsColumn({
|
|
13
|
+
columnID,
|
|
14
|
+
type = provider.FossilDataType.Collections
|
|
15
|
+
}) {
|
|
16
|
+
const data = provider.useFossilData(columnID, type);
|
|
17
|
+
const { axisType, units } = store.useMacrostratColumnData();
|
|
18
|
+
const scale = store.useCompositeScale();
|
|
19
|
+
if (data == null || units == null || scale == null) return null;
|
|
20
|
+
const data1 = preparePBDBData(data, units, scale, axisType);
|
|
21
|
+
return h(base.BaseMeasurementsColumn, {
|
|
22
|
+
data: data1,
|
|
23
|
+
noteComponent: FossilInfo,
|
|
24
|
+
focusedNoteComponent: FossilInfo,
|
|
25
|
+
className: "fossil-collections"
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function FossilInfo(props) {
|
|
29
|
+
const { note, maxItems, focused = false } = props;
|
|
30
|
+
const { data } = note;
|
|
31
|
+
data.sort((a, b) => {
|
|
32
|
+
const nameA = a.best_name ?? a.cltn_name ?? "";
|
|
33
|
+
const nameB = b.best_name ?? b.cltn_name ?? "";
|
|
34
|
+
return nameA.localeCompare(nameB);
|
|
35
|
+
});
|
|
36
|
+
return h(base.TruncatedList, {
|
|
37
|
+
data,
|
|
38
|
+
className: "fossil-collections",
|
|
39
|
+
itemRenderer: PBDBCollectionLink,
|
|
40
|
+
maxItems: focused ? Infinity : maxItems ?? 5
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function PBDBCollectionLink({
|
|
44
|
+
data
|
|
45
|
+
}) {
|
|
46
|
+
return h(
|
|
47
|
+
"a.link-id",
|
|
48
|
+
{
|
|
49
|
+
href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,
|
|
50
|
+
target: "_blank",
|
|
51
|
+
onClick(e) {
|
|
52
|
+
e.stopPropagation();
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
data.best_name ?? data.cltn_name
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
function preparePBDBData(data, units, scale, axisType, options) {
|
|
59
|
+
const { groupCloseNotes = true } = {};
|
|
60
|
+
const groupDistance = typeof groupCloseNotes === "number" ? groupCloseNotes : 10;
|
|
61
|
+
const dataMap = /* @__PURE__ */ new Map();
|
|
62
|
+
for (const d of data) {
|
|
63
|
+
const range = getHeightRangeForPBDBEntity(d, units, axisType);
|
|
64
|
+
if (range == null) continue;
|
|
65
|
+
const { height, top_height } = range;
|
|
66
|
+
let key = `${height}`;
|
|
67
|
+
if (top_height != null) {
|
|
68
|
+
key += `-${top_height}`;
|
|
69
|
+
}
|
|
70
|
+
if (!dataMap.has(key)) {
|
|
71
|
+
dataMap.set(key, {
|
|
72
|
+
height,
|
|
73
|
+
top_height: top_height ?? height,
|
|
74
|
+
data: [],
|
|
75
|
+
id: key
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
dataMap.get(key).data.push(d);
|
|
79
|
+
}
|
|
80
|
+
return base.groupNotesByPixelDistance(
|
|
81
|
+
Array.from(dataMap.values()),
|
|
82
|
+
scale,
|
|
83
|
+
axisType,
|
|
84
|
+
groupDistance
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
function getHeightRangeForPBDBEntity(d, units, axisType) {
|
|
88
|
+
let height = null;
|
|
89
|
+
if (d.slb != null && d.slu == "mbsf") {
|
|
90
|
+
height = Number(d.slb);
|
|
91
|
+
if (axisType === columnComponents.ColumnAxisType.DEPTH) {
|
|
92
|
+
return { height };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (d.unit_id == null) return null;
|
|
96
|
+
if (height != null) {
|
|
97
|
+
const unit = units.find((u) => u.unit_id === d.unit_id);
|
|
98
|
+
if (unit == null) return null;
|
|
99
|
+
const relHeight = getRelativePositionInUnit(
|
|
100
|
+
height,
|
|
101
|
+
unit,
|
|
102
|
+
columnComponents.ColumnAxisType.DEPTH
|
|
103
|
+
);
|
|
104
|
+
if (relHeight == null) return null;
|
|
105
|
+
height = utils.getPositionWithinUnit(relHeight, unit, axisType);
|
|
106
|
+
return { height };
|
|
107
|
+
}
|
|
108
|
+
return base.standardizeMeasurementHeight({ unit_id: d.unit_id }, units, axisType);
|
|
109
|
+
}
|
|
110
|
+
function getRelativePositionInUnit(pos, unit, axisType) {
|
|
111
|
+
const heights = utils.getUnitHeightRange(unit, axisType, false);
|
|
112
|
+
const scale = d3Scale.scaleLinear(heights).domain([0, 1]);
|
|
113
|
+
const relPos = scale.invert(pos);
|
|
114
|
+
if (relPos < 0 || relPos > 1) return null;
|
|
115
|
+
return relPos;
|
|
116
|
+
}
|
|
117
|
+
exports.FossilDataType = provider.FossilDataType;
|
|
118
|
+
exports.useFossilData = provider.useFossilData;
|
|
119
|
+
exports.PBDBFossilsColumn = PBDBFossilsColumn;
|
|
120
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/facets/fossils/index.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n} from \"./provider\";\nimport type { IUnit } from \"../../units\";\nimport {\n BaseMeasurementsColumn,\n ColumnMeasurementData,\n MeasurementHeightData,\n standardizeMeasurementHeight,\n groupNotesByPixelDistance,\n TruncatedList,\n} from \"../measurements\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport {\n useCompositeScale,\n useMacrostratColumnData,\n} from \"../../data-provider\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport styles from \"./taxon-ranges.module.sass\";\nimport {\n CompositeColumnScale,\n getPositionWithinUnit,\n getUnitHeightRange,\n} from \"../../prepare-units\";\nimport { scaleLinear } from \"d3-scale\";\n\nexport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n};\nexport * from \"./taxon-ranges\";\n\nconst h = hyper.styled(styles);\n\nexport function PBDBFossilsColumn({\n columnID,\n type = FossilDataType.Collections,\n}: {\n columnID: number;\n type: FossilDataType;\n}) {\n const data = useFossilData(columnID, type);\n const { axisType, units } = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null || units == null || scale == null) return null;\n\n const data1 = preparePBDBData(data, units, scale, axisType);\n\n return h(BaseMeasurementsColumn, {\n data: data1,\n noteComponent: FossilInfo,\n focusedNoteComponent: FossilInfo,\n className: \"fossil-collections\",\n });\n}\n\ninterface FossilItemProps {\n note: {\n data: PBDBCollection[];\n unit?: IUnit;\n };\n spacing?: {\n below?: number;\n above?: number;\n };\n width?: number;\n height?: number;\n color?: string;\n focused?: boolean;\n maxItems?: number;\n}\n\nfunction FossilInfo(props: FossilItemProps) {\n const { note, maxItems, focused = false } = props;\n const { data } = note;\n // Sort collections by name\n data.sort((a, b) => {\n const nameA = a.best_name ?? a.cltn_name ?? \"\";\n const nameB = b.best_name ?? b.cltn_name ?? \"\";\n return nameA.localeCompare(nameB);\n });\n\n return h(TruncatedList, {\n data,\n className: \"fossil-collections\",\n itemRenderer: PBDBCollectionLink,\n maxItems: focused ? Infinity : (maxItems ?? 5),\n });\n}\n\nfunction PBDBCollectionLink({\n data,\n}: {\n data: PBDBCollection | PBDBOccurrence;\n}) {\n /** A link to a PBDB collection that handles either an occurrence or collection object */\n return h(\n \"a.link-id\",\n {\n href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,\n target: \"_blank\",\n onClick(e) {\n e.stopPropagation();\n },\n },\n data.best_name ?? data.cltn_name,\n );\n}\n\ninterface PreparePBDBDataOptions {\n /** If set, group close notes within this distance (in pixels in display space)\n * into a single note. If a number is provided, that number is used as the distance,\n * otherwise a default of 5 pixels is used.\n */\n groupCloseNotes?: boolean | number;\n}\n\nfunction preparePBDBData<T extends PBDBEntity>(\n data: T[],\n units: UnitLong[],\n scale: CompositeColumnScale,\n axisType: ColumnAxisType,\n options?: PreparePBDBDataOptions,\n) {\n /** Prepare PBDB fossil data for display in a measurements column */\n const { groupCloseNotes = true } = options ?? {};\n const groupDistance =\n typeof groupCloseNotes === \"number\" ? groupCloseNotes : 10;\n\n // Map of data to its defined height ranges\n const dataMap = new Map<string, ColumnMeasurementData<T[]>>();\n\n // Todo: if we wanted, we could add a step where we group notes that are too close together here...\n\n for (const d of data) {\n const range = getHeightRangeForPBDBEntity(d, units, axisType);\n\n if (range == null) continue;\n const { height, top_height } = range;\n // compose the key based on height info\n let key = `${height}`;\n if (top_height != null) {\n key += `-${top_height}`;\n }\n\n // Group by height key\n if (!dataMap.has(key)) {\n dataMap.set(key, {\n height,\n top_height: top_height ?? height,\n data: [],\n id: key,\n });\n }\n dataMap.get(key)!.data.push(d);\n }\n\n return groupNotesByPixelDistance(\n Array.from(dataMap.values()),\n scale,\n axisType,\n groupDistance,\n );\n}\n\nfunction getHeightRangeForPBDBEntity<T extends PBDBEntity>(\n d: T,\n units: UnitLong[],\n axisType: ColumnAxisType,\n): MeasurementHeightData | null {\n let height: number | null = null;\n if (d.slb != null && d.slu == \"mbsf\") {\n // Meters below sea floor - special case for eODP where we have\n // specific depth data referenced\n height = Number(d.slb);\n if (axisType === ColumnAxisType.DEPTH) {\n // Data is already in depth units\n return { height };\n }\n }\n if (d.unit_id == null) return null;\n if (height != null) {\n // If we have both height and unit info, we need to adjust the height\n // to fit whatever scale type we're using.\n // TODO: we could improve how this works by having concurrent age and\n // height scales, which would allow us to do this without having to\n // reference to a specific unit.\n const unit = units.find((u) => u.unit_id === d.unit_id);\n if (unit == null) return null;\n const relHeight = getRelativePositionInUnit(\n height,\n unit,\n ColumnAxisType.DEPTH,\n );\n if (relHeight == null) return null;\n height = getPositionWithinUnit(relHeight, unit, axisType);\n return { height };\n }\n // We can just get the height within the unit, clipped to the unit boundaries\n return standardizeMeasurementHeight({ unit_id: d.unit_id }, units, axisType);\n}\n\nfunction getRelativePositionInUnit(\n pos: number,\n unit: UnitLong,\n axisType: ColumnAxisType,\n): number | null {\n // This is the inverse of getPositionWithinUnit\n const heights = getUnitHeightRange(unit, axisType, false);\n const scale = scaleLinear(heights).domain([0, 1]);\n const relPos = scale.invert(pos);\n if (relPos < 0 || relPos > 1) return null;\n return relPos;\n}\n"],"names":["hyper","styles","FossilDataType","useFossilData","useMacrostratColumnData","useCompositeScale","BaseMeasurementsColumn","TruncatedList","groupNotesByPixelDistance","ColumnAxisType","getPositionWithinUnit","standardizeMeasurementHeight","getUnitHeightRange","scaleLinear"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FossilDataType, PBDBCollection, PBDBEntity, PBDBOccurrence, useFossilData } from './provider';
|
|
2
|
+
export { FossilDataType, type PBDBCollection, type PBDBEntity, type PBDBOccurrence, useFossilData, };
|
|
3
|
+
export * from './taxon-ranges';
|
|
4
|
+
export declare function PBDBFossilsColumn({ columnID, type, }: {
|
|
5
|
+
columnID: number;
|
|
6
|
+
type: FossilDataType;
|
|
7
|
+
}): import('react').FunctionComponentElement<import('..').BaseMeasurementsColumnProps<any>>;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import h$1 from "@macrostrat/hyper";
|
|
2
|
+
import { useFossilData, FossilDataType } from "./provider.js";
|
|
3
|
+
import { ColumnAxisType } from "@macrostrat/column-components";
|
|
4
|
+
import styles from "./taxon-ranges.module.sass.js";
|
|
5
|
+
import { scaleLinear } from "d3-scale";
|
|
6
|
+
import { BaseMeasurementsColumn, groupNotesByPixelDistance, TruncatedList, standardizeMeasurementHeight } from "../measurements/base.js";
|
|
7
|
+
import { useMacrostratColumnData, useCompositeScale } from "../../data-provider/store.js";
|
|
8
|
+
import { getPositionWithinUnit, getUnitHeightRange } from "../../prepare-units/utils.js";
|
|
9
|
+
const h = h$1.styled(styles);
|
|
10
|
+
function PBDBFossilsColumn({
|
|
11
|
+
columnID,
|
|
12
|
+
type = FossilDataType.Collections
|
|
13
|
+
}) {
|
|
14
|
+
const data = useFossilData(columnID, type);
|
|
15
|
+
const { axisType, units } = useMacrostratColumnData();
|
|
16
|
+
const scale = useCompositeScale();
|
|
17
|
+
if (data == null || units == null || scale == null) return null;
|
|
18
|
+
const data1 = preparePBDBData(data, units, scale, axisType);
|
|
19
|
+
return h(BaseMeasurementsColumn, {
|
|
20
|
+
data: data1,
|
|
21
|
+
noteComponent: FossilInfo,
|
|
22
|
+
focusedNoteComponent: FossilInfo,
|
|
23
|
+
className: "fossil-collections"
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function FossilInfo(props) {
|
|
27
|
+
const { note, maxItems, focused = false } = props;
|
|
28
|
+
const { data } = note;
|
|
29
|
+
data.sort((a, b) => {
|
|
30
|
+
const nameA = a.best_name ?? a.cltn_name ?? "";
|
|
31
|
+
const nameB = b.best_name ?? b.cltn_name ?? "";
|
|
32
|
+
return nameA.localeCompare(nameB);
|
|
33
|
+
});
|
|
34
|
+
return h(TruncatedList, {
|
|
35
|
+
data,
|
|
36
|
+
className: "fossil-collections",
|
|
37
|
+
itemRenderer: PBDBCollectionLink,
|
|
38
|
+
maxItems: focused ? Infinity : maxItems ?? 5
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function PBDBCollectionLink({
|
|
42
|
+
data
|
|
43
|
+
}) {
|
|
44
|
+
return h(
|
|
45
|
+
"a.link-id",
|
|
46
|
+
{
|
|
47
|
+
href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,
|
|
48
|
+
target: "_blank",
|
|
49
|
+
onClick(e) {
|
|
50
|
+
e.stopPropagation();
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
data.best_name ?? data.cltn_name
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
function preparePBDBData(data, units, scale, axisType, options) {
|
|
57
|
+
const { groupCloseNotes = true } = {};
|
|
58
|
+
const groupDistance = typeof groupCloseNotes === "number" ? groupCloseNotes : 10;
|
|
59
|
+
const dataMap = /* @__PURE__ */ new Map();
|
|
60
|
+
for (const d of data) {
|
|
61
|
+
const range = getHeightRangeForPBDBEntity(d, units, axisType);
|
|
62
|
+
if (range == null) continue;
|
|
63
|
+
const { height, top_height } = range;
|
|
64
|
+
let key = `${height}`;
|
|
65
|
+
if (top_height != null) {
|
|
66
|
+
key += `-${top_height}`;
|
|
67
|
+
}
|
|
68
|
+
if (!dataMap.has(key)) {
|
|
69
|
+
dataMap.set(key, {
|
|
70
|
+
height,
|
|
71
|
+
top_height: top_height ?? height,
|
|
72
|
+
data: [],
|
|
73
|
+
id: key
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
dataMap.get(key).data.push(d);
|
|
77
|
+
}
|
|
78
|
+
return groupNotesByPixelDistance(
|
|
79
|
+
Array.from(dataMap.values()),
|
|
80
|
+
scale,
|
|
81
|
+
axisType,
|
|
82
|
+
groupDistance
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
function getHeightRangeForPBDBEntity(d, units, axisType) {
|
|
86
|
+
let height = null;
|
|
87
|
+
if (d.slb != null && d.slu == "mbsf") {
|
|
88
|
+
height = Number(d.slb);
|
|
89
|
+
if (axisType === ColumnAxisType.DEPTH) {
|
|
90
|
+
return { height };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (d.unit_id == null) return null;
|
|
94
|
+
if (height != null) {
|
|
95
|
+
const unit = units.find((u) => u.unit_id === d.unit_id);
|
|
96
|
+
if (unit == null) return null;
|
|
97
|
+
const relHeight = getRelativePositionInUnit(
|
|
98
|
+
height,
|
|
99
|
+
unit,
|
|
100
|
+
ColumnAxisType.DEPTH
|
|
101
|
+
);
|
|
102
|
+
if (relHeight == null) return null;
|
|
103
|
+
height = getPositionWithinUnit(relHeight, unit, axisType);
|
|
104
|
+
return { height };
|
|
105
|
+
}
|
|
106
|
+
return standardizeMeasurementHeight({ unit_id: d.unit_id }, units, axisType);
|
|
107
|
+
}
|
|
108
|
+
function getRelativePositionInUnit(pos, unit, axisType) {
|
|
109
|
+
const heights = getUnitHeightRange(unit, axisType, false);
|
|
110
|
+
const scale = scaleLinear(heights).domain([0, 1]);
|
|
111
|
+
const relPos = scale.invert(pos);
|
|
112
|
+
if (relPos < 0 || relPos > 1) return null;
|
|
113
|
+
return relPos;
|
|
114
|
+
}
|
|
115
|
+
export {
|
|
116
|
+
FossilDataType,
|
|
117
|
+
PBDBFossilsColumn,
|
|
118
|
+
useFossilData
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/facets/fossils/index.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n} from \"./provider\";\nimport type { IUnit } from \"../../units\";\nimport {\n BaseMeasurementsColumn,\n ColumnMeasurementData,\n MeasurementHeightData,\n standardizeMeasurementHeight,\n groupNotesByPixelDistance,\n TruncatedList,\n} from \"../measurements\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport {\n useCompositeScale,\n useMacrostratColumnData,\n} from \"../../data-provider\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport styles from \"./taxon-ranges.module.sass\";\nimport {\n CompositeColumnScale,\n getPositionWithinUnit,\n getUnitHeightRange,\n} from \"../../prepare-units\";\nimport { scaleLinear } from \"d3-scale\";\n\nexport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n};\nexport * from \"./taxon-ranges\";\n\nconst h = hyper.styled(styles);\n\nexport function PBDBFossilsColumn({\n columnID,\n type = FossilDataType.Collections,\n}: {\n columnID: number;\n type: FossilDataType;\n}) {\n const data = useFossilData(columnID, type);\n const { axisType, units } = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null || units == null || scale == null) return null;\n\n const data1 = preparePBDBData(data, units, scale, axisType);\n\n return h(BaseMeasurementsColumn, {\n data: data1,\n noteComponent: FossilInfo,\n focusedNoteComponent: FossilInfo,\n className: \"fossil-collections\",\n });\n}\n\ninterface FossilItemProps {\n note: {\n data: PBDBCollection[];\n unit?: IUnit;\n };\n spacing?: {\n below?: number;\n above?: number;\n };\n width?: number;\n height?: number;\n color?: string;\n focused?: boolean;\n maxItems?: number;\n}\n\nfunction FossilInfo(props: FossilItemProps) {\n const { note, maxItems, focused = false } = props;\n const { data } = note;\n // Sort collections by name\n data.sort((a, b) => {\n const nameA = a.best_name ?? a.cltn_name ?? \"\";\n const nameB = b.best_name ?? b.cltn_name ?? \"\";\n return nameA.localeCompare(nameB);\n });\n\n return h(TruncatedList, {\n data,\n className: \"fossil-collections\",\n itemRenderer: PBDBCollectionLink,\n maxItems: focused ? Infinity : (maxItems ?? 5),\n });\n}\n\nfunction PBDBCollectionLink({\n data,\n}: {\n data: PBDBCollection | PBDBOccurrence;\n}) {\n /** A link to a PBDB collection that handles either an occurrence or collection object */\n return h(\n \"a.link-id\",\n {\n href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,\n target: \"_blank\",\n onClick(e) {\n e.stopPropagation();\n },\n },\n data.best_name ?? data.cltn_name,\n );\n}\n\ninterface PreparePBDBDataOptions {\n /** If set, group close notes within this distance (in pixels in display space)\n * into a single note. If a number is provided, that number is used as the distance,\n * otherwise a default of 5 pixels is used.\n */\n groupCloseNotes?: boolean | number;\n}\n\nfunction preparePBDBData<T extends PBDBEntity>(\n data: T[],\n units: UnitLong[],\n scale: CompositeColumnScale,\n axisType: ColumnAxisType,\n options?: PreparePBDBDataOptions,\n) {\n /** Prepare PBDB fossil data for display in a measurements column */\n const { groupCloseNotes = true } = options ?? {};\n const groupDistance =\n typeof groupCloseNotes === \"number\" ? groupCloseNotes : 10;\n\n // Map of data to its defined height ranges\n const dataMap = new Map<string, ColumnMeasurementData<T[]>>();\n\n // Todo: if we wanted, we could add a step where we group notes that are too close together here...\n\n for (const d of data) {\n const range = getHeightRangeForPBDBEntity(d, units, axisType);\n\n if (range == null) continue;\n const { height, top_height } = range;\n // compose the key based on height info\n let key = `${height}`;\n if (top_height != null) {\n key += `-${top_height}`;\n }\n\n // Group by height key\n if (!dataMap.has(key)) {\n dataMap.set(key, {\n height,\n top_height: top_height ?? height,\n data: [],\n id: key,\n });\n }\n dataMap.get(key)!.data.push(d);\n }\n\n return groupNotesByPixelDistance(\n Array.from(dataMap.values()),\n scale,\n axisType,\n groupDistance,\n );\n}\n\nfunction getHeightRangeForPBDBEntity<T extends PBDBEntity>(\n d: T,\n units: UnitLong[],\n axisType: ColumnAxisType,\n): MeasurementHeightData | null {\n let height: number | null = null;\n if (d.slb != null && d.slu == \"mbsf\") {\n // Meters below sea floor - special case for eODP where we have\n // specific depth data referenced\n height = Number(d.slb);\n if (axisType === ColumnAxisType.DEPTH) {\n // Data is already in depth units\n return { height };\n }\n }\n if (d.unit_id == null) return null;\n if (height != null) {\n // If we have both height and unit info, we need to adjust the height\n // to fit whatever scale type we're using.\n // TODO: we could improve how this works by having concurrent age and\n // height scales, which would allow us to do this without having to\n // reference to a specific unit.\n const unit = units.find((u) => u.unit_id === d.unit_id);\n if (unit == null) return null;\n const relHeight = getRelativePositionInUnit(\n height,\n unit,\n ColumnAxisType.DEPTH,\n );\n if (relHeight == null) return null;\n height = getPositionWithinUnit(relHeight, unit, axisType);\n return { height };\n }\n // We can just get the height within the unit, clipped to the unit boundaries\n return standardizeMeasurementHeight({ unit_id: d.unit_id }, units, axisType);\n}\n\nfunction getRelativePositionInUnit(\n pos: number,\n unit: UnitLong,\n axisType: ColumnAxisType,\n): number | null {\n // This is the inverse of getPositionWithinUnit\n const heights = getUnitHeightRange(unit, axisType, false);\n const scale = scaleLinear(heights).domain([0, 1]);\n const relPos = scale.invert(pos);\n if (relPos < 0 || relPos > 1) return null;\n return relPos;\n}\n"],"names":["hyper"],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const uiComponents = require("@macrostrat/ui-components");
|
|
4
|
+
const pbdbAPIBase = "https://paleobiodb.org/data1.2";
|
|
5
|
+
var FossilDataType = /* @__PURE__ */ ((FossilDataType2) => {
|
|
6
|
+
FossilDataType2["Occurrences"] = "occs";
|
|
7
|
+
FossilDataType2["Collections"] = "colls";
|
|
8
|
+
return FossilDataType2;
|
|
9
|
+
})(FossilDataType || {});
|
|
10
|
+
function useFossilData(col_id, type = "colls") {
|
|
11
|
+
return uiComponents.useAsyncMemo(async () => {
|
|
12
|
+
if (col_id == null) return null;
|
|
13
|
+
return await fetchFossilData(col_id, type);
|
|
14
|
+
}, [col_id, type]);
|
|
15
|
+
}
|
|
16
|
+
async function fetchMacrostratFossilData(col_id, type) {
|
|
17
|
+
if (type !== "colls") {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
const resp = await fetch(
|
|
21
|
+
`https://macrostrat.org/api/fossils?col_id=${col_id}`
|
|
22
|
+
);
|
|
23
|
+
const res = await resp.json();
|
|
24
|
+
return res.success.data;
|
|
25
|
+
}
|
|
26
|
+
async function fetchPDBDFossilData(col_id, type) {
|
|
27
|
+
const resp = await fetch(
|
|
28
|
+
pbdbAPIBase + `/${type}/list.json?ms_column=${col_id}&show=mslink,stratext`
|
|
29
|
+
);
|
|
30
|
+
const res = await resp.json();
|
|
31
|
+
return res.records.map(
|
|
32
|
+
type == "colls" ? createMacrostratCollection : preprocessOccurrence
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
async function fetchFossilData(colID, type) {
|
|
36
|
+
const [macrostratData, pbdbData] = await Promise.all([
|
|
37
|
+
fetchMacrostratFossilData(colID, type),
|
|
38
|
+
fetchPDBDFossilData(colID, type)
|
|
39
|
+
]);
|
|
40
|
+
return [...macrostratData, ...pbdbData];
|
|
41
|
+
}
|
|
42
|
+
function preprocessOccurrence(d) {
|
|
43
|
+
if (d.msu == null || d.msc == null) {
|
|
44
|
+
return d;
|
|
45
|
+
}
|
|
46
|
+
const unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
|
|
47
|
+
const col_id = parseInt(d.msc.replace(/^\w+:/, ""));
|
|
48
|
+
const occ_id = parseInt(d.oid.replace(/^occ:/, ""));
|
|
49
|
+
const cltn_id = parseInt(d.cid.replace(/^col:/, ""));
|
|
50
|
+
return {
|
|
51
|
+
...d,
|
|
52
|
+
unit_id,
|
|
53
|
+
col_id,
|
|
54
|
+
taxon_name: d.tna,
|
|
55
|
+
best_name: d.idn ?? d.tna,
|
|
56
|
+
occ_id,
|
|
57
|
+
cltn_id,
|
|
58
|
+
cltn_name: d.nam
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function createMacrostratCollection(d) {
|
|
62
|
+
let unit_id = null;
|
|
63
|
+
let col_id = null;
|
|
64
|
+
if (d.msu != null) {
|
|
65
|
+
unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
|
|
66
|
+
}
|
|
67
|
+
if (d.msc != null) {
|
|
68
|
+
col_id = parseInt(d.msc.replace(/^\w+:/, ""));
|
|
69
|
+
}
|
|
70
|
+
let taxon_name = d.tna;
|
|
71
|
+
let occ_id = null;
|
|
72
|
+
if (d.oid != null && d.oid.startsWith("occ:")) {
|
|
73
|
+
occ_id = parseInt(d.oid.replace(/^occ:/, ""));
|
|
74
|
+
}
|
|
75
|
+
if (d.idn != null) {
|
|
76
|
+
taxon_name = d.idn;
|
|
77
|
+
}
|
|
78
|
+
let cltn_id = d.cltn_id;
|
|
79
|
+
if (d.oid != null && d.oid.startsWith("col:")) {
|
|
80
|
+
cltn_id = parseInt(d.oid.replace(/^col:/, ""));
|
|
81
|
+
} else if (d.cid != null && d.cid.startsWith("col:")) {
|
|
82
|
+
cltn_id = parseInt(d.cid.replace(/^col:/, ""));
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
...d,
|
|
86
|
+
unit_id,
|
|
87
|
+
col_id,
|
|
88
|
+
taxon_name,
|
|
89
|
+
occ_id,
|
|
90
|
+
cltn_id,
|
|
91
|
+
cltn_name: d.nam,
|
|
92
|
+
t_age: d.t_age,
|
|
93
|
+
b_age: d.b_age
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
exports.FossilDataType = FossilDataType;
|
|
97
|
+
exports.fetchFossilData = fetchFossilData;
|
|
98
|
+
exports.useFossilData = useFossilData;
|
|
99
|
+
//# sourceMappingURL=provider.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.cjs","sources":["../../../src/facets/fossils/provider.ts"],"sourcesContent":["import { useAsyncMemo } from \"@macrostrat/ui-components\";\n\nconst pbdbAPIBase = \"https://paleobiodb.org/data1.2\";\n\nexport enum FossilDataType {\n Occurrences = \"occs\",\n Collections = \"colls\",\n}\n\nexport interface PBDBEntity {\n unit_id: number;\n col_id: number;\n cltn_id: number;\n // For eODP, slb/slu are used to store the heights of fossil locations found in measured sections.\n // They may have a more general set of uses as well but these are not currently explored.\n slb?: string; // The local bed in which the fossil was found\n slu?: string; // The unit of measurement used to designate the local bed\n}\n\nexport interface PBDBCollection extends PBDBEntity {\n cltn_name: string;\n pbdb_occs: number;\n t_age: number;\n b_age: number;\n [key: string]: any; // Allow for additional properties\n}\n\nexport interface PBDBOccurrence extends PBDBEntity {\n occ_id: number;\n cltn_id: number;\n taxon_name: string;\n best_name: string;\n [key: string]: any; // Allow for additional properties\n}\n\nexport function useFossilData<T extends PBDBEntity>(\n col_id: number,\n type = FossilDataType.Collections,\n): T[] {\n // Fossil links are stored in both Macrostrat and PBDB, depending on how the link was assembled. Here\n // we create a unified view of data over both sources.\n return useAsyncMemo(async () => {\n if (col_id == null) return null;\n return await fetchFossilData(col_id, type);\n }, [col_id, type]);\n}\n\nasync function fetchMacrostratFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBCollection[]> {\n if (type !== FossilDataType.Collections) {\n // Macrostrat API only supports collections\n return [];\n }\n\n // Fetch fossil collections linked to columns from the Macrostrat API\n const resp = await fetch(\n `https://macrostrat.org/api/fossils?col_id=${col_id}`,\n );\n const res = await resp.json();\n // Create collections from Macrostrat data\n return res.success.data;\n}\n\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType.Collections,\n): Promise<PBDBCollection[]>;\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType.Occurrences,\n): Promise<PBDBOccurrence[]>;\nasync function fetchPDBDFossilData<T extends PBDBEntity>(\n col_id: number,\n type: FossilDataType,\n): Promise<T[]>;\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBEntity[]> {\n // Note: show=rank does not work on training PBDB server\n const resp = await fetch(\n pbdbAPIBase + `/${type}/list.json?ms_column=${col_id}&show=mslink,stratext`,\n );\n const res = await resp.json();\n return res.records.map(\n type == FossilDataType.Collections\n ? createMacrostratCollection\n : preprocessOccurrence,\n );\n}\n\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType.Collections,\n): Promise<PBDBCollection[]>;\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType.Occurrences,\n): Promise<PBDBOccurrence[]>;\nexport async function fetchFossilData<T extends PBDBEntity>(\n colID: number,\n type: FossilDataType,\n): Promise<T[]>;\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType,\n): Promise<PBDBEntity[]> {\n const [macrostratData, pbdbData] = await Promise.all([\n fetchMacrostratFossilData(colID, type),\n fetchPDBDFossilData(colID, type),\n ]);\n return [...macrostratData, ...pbdbData];\n}\n\nfunction preprocessOccurrence(d): PBDBOccurrence {\n if (d.msu == null || d.msc == null) {\n return d;\n }\n /* Preprocess data for an occurrence into a Macrostrat-like format */\n // Standardize names of Macrostrat units and columns\n const unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n const col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n\n // taxon names may be stored in different fields\n const occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n const cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name: d.tna,\n best_name: d.idn ?? d.tna,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n };\n}\n\nfunction createMacrostratCollection(d): PBDBCollection {\n /* Preprocess data for a collection into a Macrostrat-like format */\n let unit_id = null;\n let col_id = null;\n // Standardize names of Macrostrat units and columns\n if (d.msu != null) {\n unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n }\n if (d.msc != null) {\n col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n }\n\n // taxon names may be stored in different fields\n let taxon_name = d.tna;\n let occ_id = null;\n if (d.oid != null && d.oid.startsWith(\"occ:\")) {\n occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n }\n if (d.idn != null) {\n taxon_name = d.idn;\n }\n\n let cltn_id = d.cltn_id;\n if (d.oid != null && d.oid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.oid.replace(/^col:/, \"\"));\n } else if (d.cid != null && d.cid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n }\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n t_age: d.t_age,\n b_age: d.b_age,\n };\n}\n"],"names":["FossilDataType","useAsyncMemo"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare enum FossilDataType {
|
|
2
|
+
Occurrences = "occs",
|
|
3
|
+
Collections = "colls"
|
|
4
|
+
}
|
|
5
|
+
export interface PBDBEntity {
|
|
6
|
+
unit_id: number;
|
|
7
|
+
col_id: number;
|
|
8
|
+
cltn_id: number;
|
|
9
|
+
slb?: string;
|
|
10
|
+
slu?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface PBDBCollection extends PBDBEntity {
|
|
13
|
+
cltn_name: string;
|
|
14
|
+
pbdb_occs: number;
|
|
15
|
+
t_age: number;
|
|
16
|
+
b_age: number;
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
}
|
|
19
|
+
export interface PBDBOccurrence extends PBDBEntity {
|
|
20
|
+
occ_id: number;
|
|
21
|
+
cltn_id: number;
|
|
22
|
+
taxon_name: string;
|
|
23
|
+
best_name: string;
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
}
|
|
26
|
+
export declare function useFossilData<T extends PBDBEntity>(col_id: number, type?: FossilDataType): T[];
|
|
27
|
+
export declare function fetchFossilData(colID: number, type: FossilDataType.Collections): Promise<PBDBCollection[]>;
|
|
28
|
+
export declare function fetchFossilData(colID: number, type: FossilDataType.Occurrences): Promise<PBDBOccurrence[]>;
|
|
29
|
+
export declare function fetchFossilData<T extends PBDBEntity>(colID: number, type: FossilDataType): Promise<T[]>;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { useAsyncMemo } from "@macrostrat/ui-components";
|
|
2
|
+
const pbdbAPIBase = "https://paleobiodb.org/data1.2";
|
|
3
|
+
var FossilDataType = /* @__PURE__ */ ((FossilDataType2) => {
|
|
4
|
+
FossilDataType2["Occurrences"] = "occs";
|
|
5
|
+
FossilDataType2["Collections"] = "colls";
|
|
6
|
+
return FossilDataType2;
|
|
7
|
+
})(FossilDataType || {});
|
|
8
|
+
function useFossilData(col_id, type = "colls") {
|
|
9
|
+
return useAsyncMemo(async () => {
|
|
10
|
+
if (col_id == null) return null;
|
|
11
|
+
return await fetchFossilData(col_id, type);
|
|
12
|
+
}, [col_id, type]);
|
|
13
|
+
}
|
|
14
|
+
async function fetchMacrostratFossilData(col_id, type) {
|
|
15
|
+
if (type !== "colls") {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
const resp = await fetch(
|
|
19
|
+
`https://macrostrat.org/api/fossils?col_id=${col_id}`
|
|
20
|
+
);
|
|
21
|
+
const res = await resp.json();
|
|
22
|
+
return res.success.data;
|
|
23
|
+
}
|
|
24
|
+
async function fetchPDBDFossilData(col_id, type) {
|
|
25
|
+
const resp = await fetch(
|
|
26
|
+
pbdbAPIBase + `/${type}/list.json?ms_column=${col_id}&show=mslink,stratext`
|
|
27
|
+
);
|
|
28
|
+
const res = await resp.json();
|
|
29
|
+
return res.records.map(
|
|
30
|
+
type == "colls" ? createMacrostratCollection : preprocessOccurrence
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
async function fetchFossilData(colID, type) {
|
|
34
|
+
const [macrostratData, pbdbData] = await Promise.all([
|
|
35
|
+
fetchMacrostratFossilData(colID, type),
|
|
36
|
+
fetchPDBDFossilData(colID, type)
|
|
37
|
+
]);
|
|
38
|
+
return [...macrostratData, ...pbdbData];
|
|
39
|
+
}
|
|
40
|
+
function preprocessOccurrence(d) {
|
|
41
|
+
if (d.msu == null || d.msc == null) {
|
|
42
|
+
return d;
|
|
43
|
+
}
|
|
44
|
+
const unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
|
|
45
|
+
const col_id = parseInt(d.msc.replace(/^\w+:/, ""));
|
|
46
|
+
const occ_id = parseInt(d.oid.replace(/^occ:/, ""));
|
|
47
|
+
const cltn_id = parseInt(d.cid.replace(/^col:/, ""));
|
|
48
|
+
return {
|
|
49
|
+
...d,
|
|
50
|
+
unit_id,
|
|
51
|
+
col_id,
|
|
52
|
+
taxon_name: d.tna,
|
|
53
|
+
best_name: d.idn ?? d.tna,
|
|
54
|
+
occ_id,
|
|
55
|
+
cltn_id,
|
|
56
|
+
cltn_name: d.nam
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function createMacrostratCollection(d) {
|
|
60
|
+
let unit_id = null;
|
|
61
|
+
let col_id = null;
|
|
62
|
+
if (d.msu != null) {
|
|
63
|
+
unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
|
|
64
|
+
}
|
|
65
|
+
if (d.msc != null) {
|
|
66
|
+
col_id = parseInt(d.msc.replace(/^\w+:/, ""));
|
|
67
|
+
}
|
|
68
|
+
let taxon_name = d.tna;
|
|
69
|
+
let occ_id = null;
|
|
70
|
+
if (d.oid != null && d.oid.startsWith("occ:")) {
|
|
71
|
+
occ_id = parseInt(d.oid.replace(/^occ:/, ""));
|
|
72
|
+
}
|
|
73
|
+
if (d.idn != null) {
|
|
74
|
+
taxon_name = d.idn;
|
|
75
|
+
}
|
|
76
|
+
let cltn_id = d.cltn_id;
|
|
77
|
+
if (d.oid != null && d.oid.startsWith("col:")) {
|
|
78
|
+
cltn_id = parseInt(d.oid.replace(/^col:/, ""));
|
|
79
|
+
} else if (d.cid != null && d.cid.startsWith("col:")) {
|
|
80
|
+
cltn_id = parseInt(d.cid.replace(/^col:/, ""));
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
...d,
|
|
84
|
+
unit_id,
|
|
85
|
+
col_id,
|
|
86
|
+
taxon_name,
|
|
87
|
+
occ_id,
|
|
88
|
+
cltn_id,
|
|
89
|
+
cltn_name: d.nam,
|
|
90
|
+
t_age: d.t_age,
|
|
91
|
+
b_age: d.b_age
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export {
|
|
95
|
+
FossilDataType,
|
|
96
|
+
fetchFossilData,
|
|
97
|
+
useFossilData
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../src/facets/fossils/provider.ts"],"sourcesContent":["import { useAsyncMemo } from \"@macrostrat/ui-components\";\n\nconst pbdbAPIBase = \"https://paleobiodb.org/data1.2\";\n\nexport enum FossilDataType {\n Occurrences = \"occs\",\n Collections = \"colls\",\n}\n\nexport interface PBDBEntity {\n unit_id: number;\n col_id: number;\n cltn_id: number;\n // For eODP, slb/slu are used to store the heights of fossil locations found in measured sections.\n // They may have a more general set of uses as well but these are not currently explored.\n slb?: string; // The local bed in which the fossil was found\n slu?: string; // The unit of measurement used to designate the local bed\n}\n\nexport interface PBDBCollection extends PBDBEntity {\n cltn_name: string;\n pbdb_occs: number;\n t_age: number;\n b_age: number;\n [key: string]: any; // Allow for additional properties\n}\n\nexport interface PBDBOccurrence extends PBDBEntity {\n occ_id: number;\n cltn_id: number;\n taxon_name: string;\n best_name: string;\n [key: string]: any; // Allow for additional properties\n}\n\nexport function useFossilData<T extends PBDBEntity>(\n col_id: number,\n type = FossilDataType.Collections,\n): T[] {\n // Fossil links are stored in both Macrostrat and PBDB, depending on how the link was assembled. Here\n // we create a unified view of data over both sources.\n return useAsyncMemo(async () => {\n if (col_id == null) return null;\n return await fetchFossilData(col_id, type);\n }, [col_id, type]);\n}\n\nasync function fetchMacrostratFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBCollection[]> {\n if (type !== FossilDataType.Collections) {\n // Macrostrat API only supports collections\n return [];\n }\n\n // Fetch fossil collections linked to columns from the Macrostrat API\n const resp = await fetch(\n `https://macrostrat.org/api/fossils?col_id=${col_id}`,\n );\n const res = await resp.json();\n // Create collections from Macrostrat data\n return res.success.data;\n}\n\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType.Collections,\n): Promise<PBDBCollection[]>;\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType.Occurrences,\n): Promise<PBDBOccurrence[]>;\nasync function fetchPDBDFossilData<T extends PBDBEntity>(\n col_id: number,\n type: FossilDataType,\n): Promise<T[]>;\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBEntity[]> {\n // Note: show=rank does not work on training PBDB server\n const resp = await fetch(\n pbdbAPIBase + `/${type}/list.json?ms_column=${col_id}&show=mslink,stratext`,\n );\n const res = await resp.json();\n return res.records.map(\n type == FossilDataType.Collections\n ? createMacrostratCollection\n : preprocessOccurrence,\n );\n}\n\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType.Collections,\n): Promise<PBDBCollection[]>;\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType.Occurrences,\n): Promise<PBDBOccurrence[]>;\nexport async function fetchFossilData<T extends PBDBEntity>(\n colID: number,\n type: FossilDataType,\n): Promise<T[]>;\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType,\n): Promise<PBDBEntity[]> {\n const [macrostratData, pbdbData] = await Promise.all([\n fetchMacrostratFossilData(colID, type),\n fetchPDBDFossilData(colID, type),\n ]);\n return [...macrostratData, ...pbdbData];\n}\n\nfunction preprocessOccurrence(d): PBDBOccurrence {\n if (d.msu == null || d.msc == null) {\n return d;\n }\n /* Preprocess data for an occurrence into a Macrostrat-like format */\n // Standardize names of Macrostrat units and columns\n const unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n const col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n\n // taxon names may be stored in different fields\n const occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n const cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name: d.tna,\n best_name: d.idn ?? d.tna,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n };\n}\n\nfunction createMacrostratCollection(d): PBDBCollection {\n /* Preprocess data for a collection into a Macrostrat-like format */\n let unit_id = null;\n let col_id = null;\n // Standardize names of Macrostrat units and columns\n if (d.msu != null) {\n unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n }\n if (d.msc != null) {\n col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n }\n\n // taxon names may be stored in different fields\n let taxon_name = d.tna;\n let occ_id = null;\n if (d.oid != null && d.oid.startsWith(\"occ:\")) {\n occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n }\n if (d.idn != null) {\n taxon_name = d.idn;\n }\n\n let cltn_id = d.cltn_id;\n if (d.oid != null && d.oid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.oid.replace(/^col:/, \"\"));\n } else if (d.cid != null && d.cid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n }\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n t_age: d.t_age,\n b_age: d.b_age,\n };\n}\n"],"names":["FossilDataType"],"mappings":"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"}
|