quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 939 B
JavaScript
import merge from'ramda/es/merge';import all from'ramda/es/all';import isObject from'../../../../../../fc-utils/src/type/is-object';import isArray from'../../../../../../fc-utils/src/type/is-array';import isNumber from'../../../../../../fc-utils/src/type/is-number';const isValidIndex=(a,b)=>0<=b&&b<a.length,isValidNumber=(a,b)=>isNumber(b)&&isValidIndex(a,b),isValidObject=(a,b)=>isObject(b)&&isValidNumber(a,+b.index),isValidAxis=(b,c)=>isValidNumber(b,+c)||isValidObject(b,c),expand=b=>isObject(b)?merge(b,{index:+b.index}):{index:+b},toPanelConfig=b=>merge(b,{x:isArray(b.x)?b.x.map(expand):[expand(b.x)],y:isArray(b.y)?b.y.map(expand):[expand(b.y)]}),validate=(a,b)=>isArray(b)?all(b=>isValidAxis(a,b),b):isValidAxis(a,b);export default((a=[],b=[],c=[],d)=>{const e=c=>isObject(c)&&validate(a,c.x)&&validate(b,c.y),f=(a=>isArray(a)&&0<a.length?a.filter(e).map(toPanelConfig):e(a)?[toPanelConfig(a)]:[])(c);return f.length?f:d(a,b)});