UNPKG

@devgateway/dvz-ui-react

Version:

A modular, embeddable React component library for data visualization and UI, built with TypeScript. Provides reusable components for charts, maps, dashboards, and more, with built-in support for internationalization and Redux integration.

2 lines (1 loc) 2.33 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const x=require("react/jsx-runtime"),v=require("react"),R=require("d3"),j=require("./Layer.js");function _(a){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const e in a)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(a,e);Object.defineProperty(t,e,s.get?s:{enumerable:!0,get:()=>a[e]})}}return t.default=a,Object.freeze(t)}const u=_(R);class k extends j.default{constructor(){super(),this.gRef=v.createRef()}createPaths(t){const{path:e,fillColor:s,borderColor:o,projection:i}=this.props;this.gRef&&this.gRef.current&&(this.g=u.select(this.gRef.current),this.g.attr("class","base-layer zoomable"),this.g.selectAll(".borders").remove(),this.g.selectAll(".feature-label").remove(),this.g.selectAll(".borders").data(t.features).enter().append("path").attr("fill",s).attr("stroke",o).attr("id","state-borders").attr("class","borders").attr("d",e).style("vector-effect","non-scaling-stroke"))}createLabels(t){const{path:e,labelFilter:s=[],labelSettings:o={},labelField:i,labelFontSize:n,labelColor:l,projection:d,initialPosition:h}=this.props;if(this.gRef&&this.gRef.current){this.g=u.select(this.gRef.current);const c=d.scale(),p=this.props.transform?this.props.transform.k:h.k;this.g.selectAll(".feature-label").data(t.features.filter(r=>s.indexOf(r.properties[i])==-1)).enter().append("text").attr("class","feature-label").attr("font-size",r=>Math.max(.5,n/p)+"px").style("pointer-events","none").text(function(r){return r.properties[i]}).attr("font-size",r=>Math.max(.5,n/p)+"px").attr("color",l).attr("fill",l).attr("transform",function(r){const f=o[r.properties[i]+"_rotation"]||0,b=o[r.properties[i]+"_offsetX"]||0,g=o[r.properties[i]+"_offsetY"]||0,m=e.centroid(r)[0]+b/c,y=e.centroid(r)[1]+g/c;return"translate("+[m,y]+"),rotate("+(f||0)+")"}).attr("text-anchor","middle").attr("dominant-baseline","middle")}}createLayer(t){this.createPaths(t),this.createLabels(t)}componentDidMount(){super.componentDidMount()}componentDidUpdate(t,e,s){const{editing:o}=this.props;o&&this.create(),t.visible!=this.props.visible&&this.g.style("display",this.props.visible?"block":"none")}render(){const{name:t,height:e,width:s}=this.props;return x.jsx("g",{ref:this.gRef})}}exports.default=k;