UNPKG

@figlinq/react-chart-editor

Version:
2 lines 2.94 kB
import PlotlyFold from"./PlotlyFold";import TraceRequiredPanel from"./TraceRequiredPanel";import PropTypes from"prop-types";import{connectTraceToPlot,connectCartesianSubplotToLayout,connectNonCartesianSubplotToLayout,getSubplotTitle,capitalize}from"../../lib";import{TRACE_TO_AXIS,SUBPLOT_TO_ATTR}from"../../lib/constants";import{jsx as _jsx}from"react/jsx-runtime";const TraceFold=connectTraceToPlot(PlotlyFold);const NonCartesianSubplotFold=connectNonCartesianSubplotToLayout(PlotlyFold);const CartesianSubplotFold=connectCartesianSubplotToLayout(PlotlyFold);const SubplotAccordion=(_ref,_ref2)=>{let{children}=_ref;let{data=[],layout={},localize:_}=_ref2;const subplotFolds=[];const allCartesianAxisCombinations=data.reduce((acc,curVal,inx)=>{if(TRACE_TO_AXIS.cartesian.some(c=>c===curVal.type)){const xaxis="xaxis"+(curVal.xaxis?curVal.xaxis.substring(1):"");const yaxis="yaxis"+(curVal.yaxis?curVal.yaxis.substring(1):"");const existingComboIndex=acc.findIndex(t=>t.xaxis===xaxis&&t.yaxis===yaxis);if(existingComboIndex===-1){acc.push({xaxis:xaxis,yaxis:yaxis,xaxisName:curVal.xaxis?getSubplotTitle(curVal.xaxis,"x",_):"X 1",yaxisName:curVal.yaxis?getSubplotTitle(curVal.yaxis,"y",_):"Y 1",index:[inx]})}else{acc[existingComboIndex].index.push(inx)}}return acc},[]);allCartesianAxisCombinations.forEach(d=>subplotFolds[d.index[0]]=_jsx(CartesianSubplotFold,{traceIndexes:d.index,canDelete:false,xaxis:d.xaxis,yaxis:d.yaxis,name:`${d.xaxisName} | ${d.yaxisName}`,children:children},d.index[0]));Object.keys(layout).forEach(layoutKey=>{const traceIndexes=[];let subplotName;if(["geo","mapbox","polar","gl3d","ternary"].some(subplotType=>{subplotName=getSubplotTitle(layoutKey,subplotType,_);const trIndex=SUBPLOT_TO_ATTR[subplotType].layout===layoutKey?data.findIndex(trace=>TRACE_TO_AXIS[subplotType].some(tt=>tt===trace.type)):data.findIndex(trace=>trace[SUBPLOT_TO_ATTR[subplotType].data]===layoutKey);if(trIndex!==-1){traceIndexes.push(trIndex)}return layoutKey.startsWith(SUBPLOT_TO_ATTR[subplotType].layout)})){subplotFolds[traceIndexes[0]]=_jsx(NonCartesianSubplotFold,{traceIndexes:traceIndexes,canDelete:false,subplot:layoutKey,name:subplotName,children:children},layoutKey)}});const counter={pie:0,table:0,sunburst:0,treemap:0,sankey:0,parcoords:0,parcats:0};data.forEach((d,i)=>{if(d.type==="pie"&&d.values||["pie","table","sunburst","treemap","sankey","parcoords","parcats","funnelarea"].includes(d.type)){counter[d.type]++;const currentCount=counter[d.type];subplotFolds[i]=_jsx(TraceFold,{traceIndexes:[i],canDelete:false,name:capitalize(d.type)+(currentCount>1?" "+currentCount:""),children:children},i)}});return _jsx(TraceRequiredPanel,{children:subplotFolds})};SubplotAccordion.contextTypes={fullData:PropTypes.array,data:PropTypes.array,layout:PropTypes.object,localize:PropTypes.func};SubplotAccordion.propTypes={children:PropTypes.node};export default SubplotAccordion; //# sourceMappingURL=SubplotAccordion.js.map