UNPKG

@visactor/vgrammar-core

Version:

VGrammar is a visual grammar library

83 lines (64 loc) 3.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.parseColor = exports.parseField = exports.isGrammar = exports.isSignal = exports.getGrammarOutput = exports.invokeParameterFunctionType = exports.invokeFunctionType = exports.isFunctionType = exports.parseFunctionType = exports.parseReference = void 0; const vutils_1 = require("@visactor/vutils"); function parseReference(dependency, view) { return (0, vutils_1.array)(dependency).reduce(((refs, dep) => { const ref = (0, vutils_1.isString)(dep) ? view.getGrammarById(dep) : dep; return ref && refs.push(ref), refs; }), []); } function isSignalReferenceType(signal) { return !(0, vutils_1.isFunction)(signal) && !!(null == signal ? void 0 : signal.signal); } function isSignalFunctionType(signal) { return !(0, vutils_1.isFunction)(signal) && !!(null == signal ? void 0 : signal.callback); } function parseFunctionType(spec, view) { if ((0, vutils_1.isNil)(spec)) return []; if (isSignalReferenceType(spec)) { const signal = spec.signal; if ((0, vutils_1.isString)(signal)) return (0, vutils_1.array)(view.getGrammarById(signal)); if ("signal" === (null == signal ? void 0 : signal.grammarType)) return [ signal ]; } else if (isSignalFunctionType(spec)) return parseReference(spec.dependency, view); return []; } function isFunctionType(spec) { return (0, vutils_1.isFunction)(spec) || (null == spec ? void 0 : spec.signal) || !!(null == spec ? void 0 : spec.callback); } function invokeFunctionType(spec, parameters, datumOrGrammarInstance, element) { if ((0, vutils_1.isNil)(spec)) return spec; if ((0, vutils_1.isFunction)(spec)) return element ? spec.call(null, datumOrGrammarInstance, element, parameters) : spec.call(null, datumOrGrammarInstance, parameters); if (spec.signal) { const signal = spec.signal; return (0, vutils_1.isString)(signal) ? null == parameters ? void 0 : parameters[signal] : signal.output(); } return spec.callback ? element ? spec.callback.call(null, datumOrGrammarInstance, element, parameters) : spec.callback.call(null, datumOrGrammarInstance, parameters) : spec; } function invokeParameterFunctionType(spec, parameters) { if ((0, vutils_1.isNil)(spec)) return spec; if ((0, vutils_1.isFunction)(spec)) return spec.call(null, parameters); if (spec.signal) { const signal = spec.signal; return (0, vutils_1.isString)(signal) ? null == parameters ? void 0 : parameters[signal] : signal.output(); } return spec.callback ? spec.callback.call(null, parameters) : spec; } function getGrammarOutput(grammar, parameters) { return (0, exports.isGrammar)(grammar) ? grammar.output() : parameters[grammar]; } function isSignal(obj) { return obj && (obj.signal || obj.callback); } exports.parseReference = parseReference, exports.parseFunctionType = parseFunctionType, exports.isFunctionType = isFunctionType, exports.invokeFunctionType = invokeFunctionType, exports.invokeParameterFunctionType = invokeParameterFunctionType, exports.getGrammarOutput = getGrammarOutput, exports.isSignal = isSignal; const isGrammar = el => el && !(0, vutils_1.isNil)(el.grammarType); exports.isGrammar = isGrammar; const parseField = field => (0, vutils_1.isFunction)(field) ? field : datum => datum[field]; exports.parseField = parseField; const parseColor = color => (0, vutils_1.isString)(color) && vutils_1.Color.parseColorString(color) ? color : null; exports.parseColor = parseColor; //# sourceMappingURL=util.js.map