@macrostrat/column-components
Version:
React rendering primitives for stratigraphic columns
75 lines (67 loc) • 3.32 kB
JavaScript
import {GeologicPattern as $de566d6021709f60$export$9e9c2df1189db669, GeologicPatternContext as $de566d6021709f60$export$f8a3ff1b6bcec62} from "./column-components.944fb3f5.js";
import {useUUID as $78cda86e161567e8$export$b53193151b894db6, UUIDProvider as $78cda86e161567e8$export$1d23684b3f3271ac} from "./column-components.8e5c665a.js";
import {createContext as $fxSOU$createContext, useState as $fxSOU$useState, useCallback as $fxSOU$useCallback, useMemo as $fxSOU$useMemo, useContext as $fxSOU$useContext, useEffect as $fxSOU$useEffect} from "react";
import $fxSOU$macrostrathyper from "@macrostrat/hyper";
const $c6b2352da1928794$var$PatternDefsContext = (0, $fxSOU$createContext)(null);
const $c6b2352da1928794$var$GeologicPatternDefs = function(props) {
let { patternIDs: patternIDs, scalePattern: scalePattern } = props;
const UUID = props.UUID ?? (0, $78cda86e161567e8$export$b53193151b894db6)();
return (0, $fxSOU$macrostrathyper)("defs", Array.from(patternIDs).map(function(id, i) {
if (id === -1) return null;
let sz = 100;
if (scalePattern != null) sz *= scalePattern(id);
return (0, $fxSOU$macrostrathyper)((0, $de566d6021709f60$export$9e9c2df1189db669), {
key: i,
prefix: UUID,
id: id,
width: sz,
height: sz
});
}));
};
function $c6b2352da1928794$export$2162bbed7004f389(props) {
/** A next-generation provider for lithology patterns in the context of an SVG.
* We should consider generalizing this further to work without needing the "resolveID" function.
*/ const { scalePattern: scalePattern, children: children } = props;
const [patternIDs, setPatternIDs] = (0, $fxSOU$useState)(new Set());
const trackPattern = (0, $fxSOU$useCallback)((p)=>{
if (patternIDs.has(p)) return;
let newSet = new Set(patternIDs);
newSet.add(p);
setPatternIDs(newSet);
}, [
patternIDs
]);
const value = (0, $fxSOU$useMemo)(()=>{
return {
trackPattern: trackPattern
};
}, [
trackPattern
]);
return (0, $fxSOU$macrostrathyper)((0, $78cda86e161567e8$export$1d23684b3f3271ac), (0, $fxSOU$macrostrathyper)($c6b2352da1928794$var$PatternDefsContext.Provider, {
value: value
}, (0, $fxSOU$macrostrathyper)("g.patterns", [
(0, $fxSOU$macrostrathyper)($c6b2352da1928794$var$GeologicPatternDefs, {
scalePattern: scalePattern,
patternIDs: patternIDs
}),
children
])));
}
function $c6b2352da1928794$export$85aacc253e576bcf(patternID, fallback = "#aaa") {
const ctx1 = (0, $fxSOU$useContext)((0, $de566d6021709f60$export$f8a3ff1b6bcec62));
const ctx = (0, $fxSOU$useContext)($c6b2352da1928794$var$PatternDefsContext);
const UUID = (0, $78cda86e161567e8$export$b53193151b894db6)();
(0, $fxSOU$useEffect)(()=>{
ctx?.trackPattern(patternID);
}, [
patternID,
ctx
]);
let v = ctx1?.resolvePattern(patternID);
if (v == null) return fallback;
return `url(#${UUID}-${patternID})`;
}
export {$c6b2352da1928794$export$2162bbed7004f389 as PatternDefsProvider, $c6b2352da1928794$export$85aacc253e576bcf as useGeologicPattern};
//# sourceMappingURL=column-components.d12504f0.js.map