UNPKG

@macrostrat/column-components

Version:

React rendering primitives for stratigraphic columns

3 lines (2 loc) 1.95 kB
import{createContext as e,useContext as t,useRef as r}from"react";import o from"@macrostrat/hyper";import{useAsyncEffect as a,geologyPatternURL as n}from"@macrostrat/ui-components";function l(e,t,r,o){Object.defineProperty(e,t,{get:r,set:o,enumerable:!0,configurable:!0})}var i,c={};l(c,"GeologicPatternContext",()=>s),l(c,"GeologicPatternProvider",()=>d),l(c,"PatternType",()=>u),l(c,"GeologicPattern",()=>p);let s=e(null),d=e=>{let{resolvePattern:t,children:r}=e;return o(s.Provider,{value:{resolvePattern:t},children:r})};var u=((i=u||{}).Vector="vector",i.Raster="raster",i);let f=e=>{let{resolvePattern:l}=t(s),{prefix:i,backgroundColor:c,color:d,width:u,height:f,id:g,name:p,...h}=e,m={width:u,height:f};({...m});let $=`${i}-${p??g}`,P=r();return a(async()=>{let{current:e}=P;if(null!=e)try{let t=await n(g,c,d);e.crossOrigin="anonymous",e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t)}catch(e){console.error(e)}},[g,P]),o("pattern",{id:$,patternUnits:"userSpaceOnUse",...m,...h},o("image",{ref:P,...m}))},g=e=>{let{resolvePattern:r}=t(s)??{};if(null==r)return null;let{prefix:a,backgroundColor:n,color:l,width:i=100,height:c=100,id:d,name:u,...f}=e,g={width:i,height:c},p={x:0,y:0,...g},h=r(d);if(null==h)return null;let m=`${a}-${u??d}`,$=`${m}-mask`;return o("pattern",{id:m,patternUnits:"userSpaceOnUse",shapeRendering:"crispEdges",...g,...f},[o("g",{style:{isolation:"isolate"}},[o.if(null!=l&&null!=d)("mask",{id:$},[o("image",{xlinkHref:h,...p})]),o.if(null!=n)("rect",{...p,fill:n}),o.if(null!=l)("rect",{...p,fill:l,mask:`url(#${$})`}),o.if(null!=d&&null==l)("image",{xlinkHref:h,...p})])])},p=e=>{let{type:t="vector",invert:r,...a}=e;switch(r&&(a.color=e.backgroundColor,a.backgroundColor=e.color),t){case"vector":return o(g,a);case"raster":return o(f,a)}};export{s as GeologicPatternContext,d as GeologicPatternProvider,u as PatternType,p as GeologicPattern}; //# sourceMappingURL=column-components.096b396f.js.map