@macrostrat/column-components
Version:
React rendering primitives for stratigraphic columns
45 lines (44 loc) • 1.72 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const d3Scale = require("d3-scale");
const h = require("@macrostrat/hyper");
const layout = require("./context/layout.cjs");
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
const h__default = /* @__PURE__ */ _interopDefault(h);
const grainSizes = ["ms", "s", "vf", "f", "m", "c", "vc", "p"];
const createGrainsizeScale = function(range) {
const scale = d3Scale.scaleLinear().domain([0, grainSizes.length - 1]).range(range);
const tickPositions = grainSizes.map((d, i) => scale(i));
return d3Scale.scaleOrdinal().domain(grainSizes).range(tickPositions);
};
function GrainsizeAxis({ height = 20 }) {
const { grainsizeScale: gs, pixelHeight } = layout.useColumnLayout();
if (gs == null) {
throw "GrainsizeAxis must be a child of a GrainsizeScaleProvider";
}
const sizes = gs.domain();
let strlen = sizes.reduce((acc, d) => acc + d.length, 0) / sizes.length;
let className = "";
if (strlen > 2) {
className = "rotated";
}
return h__default.default(
"g.grainsize.axis",
{ className },
sizes.map((d) => {
return h__default.default("g.tick", { transform: `translate(${gs(d)} 0)`, key: d }, [
h__default.default("text.top", { y: 0 }, d),
h__default.default(
"text.bottom",
{ y: pixelHeight, style: { transformOrigin: `0 ${pixelHeight}px` } },
d
),
h__default.default("line", { y1: 0, x1: 0, x2: 0, y2: pixelHeight })
]);
})
);
}
exports.GrainsizeAxis = GrainsizeAxis;
exports.createGrainsizeScale = createGrainsizeScale;
exports.grainSizes = grainSizes;
//# sourceMappingURL=grainsize.cjs.map