UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

34 lines (30 loc) 1.63 kB
import { setProperty, mergeSpec } from "@visactor/vutils-extension"; import { isArray, isFunction, isNil } from "../../../../util"; import { executeMediaQueryActionFilter } from "./filter"; export const executeMediaQueryAction = (action, query, chartSpec, chartSpecInfo) => { const {spec: spec, filter: filter, filterType: filterType, forceAppend: forceAppend} = action, {isChart: isChart, modelType: modelType, specKey: specKey, type: type, modelInfo: modelInfo} = executeMediaQueryActionFilter(filterType, filter, action, query, chartSpec, chartSpecInfo); if (0 === modelInfo.length && !forceAppend) return { chartSpec: chartSpec, hasChanged: !1 }; const targetSpec = mergeSpec({}, chartSpec), newSpec = isFunction(spec) ? spec(modelInfo, action, query) : spec; for (const {spec: spec, specPath: specPath} of modelInfo) { if (isChart) return { chartSpec: mergeSpec(targetSpec, newSpec), hasChanged: !0 }; const modelSpec = mergeSpec({}, spec, newSpec); setProperty(targetSpec, specPath, modelSpec); } if (0 === modelInfo.length && forceAppend) { const newSpecToAppend = Object.assign({ type: type }, newSpec); isArray(targetSpec[specKey]) ? targetSpec[specKey].push(newSpecToAppend) : isNil(targetSpec[specKey]) ? targetSpec[specKey] = "component" === modelType ? newSpecToAppend : [ newSpecToAppend ] : targetSpec[specKey] = [ targetSpec[specKey], newSpecToAppend ]; } return { chartSpec: targetSpec, hasChanged: !0 }; }; //# sourceMappingURL=action.js.map