UNPKG

@macrostrat/column-components

Version:

React rendering primitives for stratigraphic columns

75 lines (67 loc) 3.32 kB
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.e19a4b4d.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.725513d9.js.map