UNPKG

@visactor/vgrammar-core

Version:

VGrammar is a visual grammar library

27 lines (23 loc) 1.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.symmetry = void 0; const vutils_1 = require("@visactor/vutils"), symmetryByChannel = (upstreamData, channel, align) => { const baseChannel = `${channel}1`, hasRangeValue = upstreamData.some((el => !(0, vutils_1.isNil)(el.getItemAttribute(baseChannel)))), middleValues = hasRangeValue ? upstreamData.map((el => (el.getItemAttribute(baseChannel) + el.getItemAttribute(channel)) / 2)) : upstreamData.map((el => el.getItemAttribute(channel))), maxMid = "min" === align ? (0, vutils_1.minInArray)(middleValues) : (0, vutils_1.maxInArray)(middleValues); return (0, vutils_1.isValidNumber)(maxMid) && upstreamData.forEach(((el, index) => { const offset = maxMid - middleValues[index]; hasRangeValue ? el.setItemAttributes({ [baseChannel]: el.getItemAttribute(baseChannel) + offset, [channel]: el.getItemAttribute(channel) + offset }) : el.setItemAttributes({ [channel]: el.getItemAttribute(channel) + offset }); })), upstreamData; }, symmetry = (options, upstreamData) => { var _a, _b; return upstreamData && 0 !== upstreamData.length && (null === (_a = upstreamData[0]) || void 0 === _a ? void 0 : _a.mark) ? symmetryByChannel(upstreamData, null !== (_b = options.channel) && void 0 !== _b ? _b : "y", options.align) : upstreamData; }; exports.symmetry = symmetry; //# sourceMappingURL=symmetry.js.map