diff --git a/lib/EditorControls.js b/lib/EditorControls.js index 43104d858..c5b637b9f 100644 --- a/lib/EditorControls.js +++ b/lib/EditorControls.js @@ -66,6 +66,15 @@ var EditorControls = function (_Component) { } _createClass(EditorControls, [{ + key: 'componentWillReceiveProps', + value: function componentWillReceiveProps(nextProps) { + var updatePayload = nextProps.updatePayload; + + if (updatePayload && updatePayload.length > 0) { + this.handleDataSourceChange(updatePayload); + } + } + }, { key: 'getChildContext', value: function getChildContext() { var gd = this.props.graphDiv || {}; @@ -129,6 +138,20 @@ var EditorControls = function (_Component) { chartHelp: this.props.chartHelp }; } + }, { + key: 'handleDataSourceChange', + value: function handleDataSourceChange(updatePayload) { + var _this2 = this; + + if (updatePayload && updatePayload.length !== 0) { + updatePayload.forEach(function (payload) { + _this2.handleUpdate({ + type: _constants.EDITOR_ACTIONS.UPDATE_TRACES, + payload: payload + }); + }); + } + } }, { key: 'handleUpdate', value: function handleUpdate(_ref) { @@ -385,7 +408,8 @@ EditorControls.propTypes = { fontOptions: _propTypes2.default.array, chartHelp: _propTypes2.default.object, optionalPanel: _propTypes2.default.node, - menuPanelOrder: _propTypes2.default.array + menuPanelOrder: _propTypes2.default.array, + updatePayload: _propTypes2.default.array }; EditorControls.defaultProps = { diff --git a/lib/EditorControls.js.map b/lib/EditorControls.js.map index 4bff95157..8087e524d 100644 --- a/lib/EditorControls.js.map +++ b/lib/EditorControls.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/EditorControls.js"],"names":["EditorControls","props","context","localize","dictionaries","locale","key","plotly","plotSchema","PlotSchema","get","gd","graphDiv","advancedTraceTypeSelector","config","_context","srcConverters","data","dataSources","dataSourceOptions","dataSourceValueRenderer","dataSourceOptionRenderer","frames","_transitionData","_frames","fullData","_fullData","fullLayout","_fullLayout","layout","onUpdate","handleUpdate","bind","traceTypesConfig","showFieldTooltips","glByDefault","mapBoxAccess","fontOptions","chartHelp","type","payload","EDITOR_ACTIONS","UPDATE_TRACES","beforeUpdateTraces","i","traceIndexes","length","attr","traceIndex","splitTraceGroup","toString","value","update","forEach","p","set","afterUpdateTraces","slice","UPDATE_LAYOUT","beforeUpdateLayout","prop","afterUpdateLayout","Object","assign","ADD_TRACE","beforeAddTrace","push","makeDefaultTrace","mode","prevTrace","prevTraceType","endsWith","afterAddTrace","DELETE_TRACE","beforeDeleteTrace","splice","afterDeleteTrace","DELETE_ANNOTATION","annotationIndex","beforeDeleteAnnotation","annotations","afterDeleteAnnotation","DELETE_SHAPE","shapeIndex","beforeDeleteShape","shapes","afterDeleteShape","DELETE_IMAGE","imageIndex","beforeDeleteImage","images","afterDeleteImage","DELETE_RANGESELECTOR","rangeselectorIndex","axisId","rangeselector","buttons","DELETE_TRANSFORM","transformIndex","transforms","Error","provideValue","className","children","optionalPanel","menuPanelOrder","Component","propTypes","PropTypes","bool","func","node","string","shape","toSrc","isRequired","fromSrc","array","object","defaultProps","categories","_","traces","complex","DEFAULT_FONTS","childContextTypes","any"],"mappings":";;;;;;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AAUA;;AACA;;;;AACA;;;;AACA;;AACA;;AAEA;;;;;;;;;;IAEMA,c;;;AACJ,0BAAYC,KAAZ,EAAmBC,OAAnB,EAA4B;AAAA;;AAAA,gIACpBD,KADoB,EACbC,OADa;;AAG1B,UAAKC,QAAL,GAAgB;AAAA,aAAO,yBAAe,MAAKF,KAAL,CAAWG,YAAX,IAA2B,EAA1C,EAA8C,MAAKH,KAAL,CAAWI,MAAzD,EAAiEC,GAAjE,CAAP;AAAA,KAAhB;;AAEA;AACA,QAAI,MAAKL,KAAL,CAAWM,MAAf,EAAuB;AACrB,YAAKC,UAAL,GAAkB,MAAKP,KAAL,CAAWM,MAAX,CAAkBE,UAAlB,CAA6BC,GAA7B,EAAlB;AACD;AARyB;AAS3B;;;;sCAEiB;AAChB,UAAMC,KAAK,KAAKV,KAAL,CAAWW,QAAX,IAAuB,EAAlC;AACA,aAAO;AACLC,mCAA2B,KAAKZ,KAAL,CAAWY,yBADjC;AAELC,gBAAQH,GAAGI,QAFN;AAGLC,uBAAe,KAAKf,KAAL,CAAWe,aAHrB;AAILC,cAAMN,GAAGM,IAJJ;AAKLC,qBAAa,KAAKjB,KAAL,CAAWiB,WALnB;AAMLC,2BAAmB,KAAKlB,KAAL,CAAWkB,iBANzB;AAOLC,iCAAyB,KAAKnB,KAAL,CAAWmB,uBAP/B;AAQLC,kCAA0B,KAAKpB,KAAL,CAAWoB,wBARhC;AASLjB,sBAAc,KAAKH,KAAL,CAAWG,YAAX,IAA2B,EATpC;AAULD,kBAAU,KAAKA,QAVV;AAWLmB,gBAAQX,GAAGY,eAAH,GAAqBZ,GAAGY,eAAH,CAAmBC,OAAxC,GAAkD,EAXrD;AAYLC,kBAAUd,GAAGe,SAZR;AAaLC,oBAAYhB,GAAGiB,WAbV;AAcLhB,kBAAUD,EAdL;AAeLkB,gBAAQlB,GAAGkB,MAfN;AAgBLxB,gBAAQ,KAAKJ,KAAL,CAAWI,MAhBd;AAiBLyB,kBAAU,KAAKC,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAjBL;AAkBLxB,oBAAY,KAAKA,UAlBZ;AAmBLD,gBAAQ,KAAKN,KAAL,CAAWM,MAnBd;AAoBL0B,0BAAkB,KAAKhC,KAAL,CAAWgC,gBApBxB;AAqBLC,2BAAmB,KAAKjC,KAAL,CAAWiC,iBArBzB;AAsBLC,qBAAa,KAAKlC,KAAL,CAAWkC,WAtBnB;AAuBLC,sBAAc,KAAKnC,KAAL,CAAWmC,YAvBpB;AAwBLC,qBAAa,KAAKpC,KAAL,CAAWoC,WAxBnB;AAyBLC,mBAAW,KAAKrC,KAAL,CAAWqC;AAzBjB,OAAP;AA2BD;;;mCAEc;AACb,UAAM3B,KAAK,KAAKV,KAAL,CAAWW,QAAX,IAAuB,EAAlC;AACA,aAAO;AACLC,mCAA2B,KAAKZ,KAAL,CAAWY,yBADjC;AAELC,gBAAQH,GAAGI,QAFN;AAGLC,uBAAe,KAAKf,KAAL,CAAWe,aAHrB;AAILC,cAAMN,GAAGM,IAJJ;AAKLC,qBAAa,KAAKjB,KAAL,CAAWiB,WALnB;AAMLC,2BAAmB,KAAKlB,KAAL,CAAWkB,iBANzB;AAOLC,iCAAyB,KAAKnB,KAAL,CAAWmB,uBAP/B;AAQLC,kCAA0B,KAAKpB,KAAL,CAAWoB,wBARhC;AASLjB,sBAAc,KAAKH,KAAL,CAAWG,YAAX,IAA2B,EATpC;AAULD,kBAAU,KAAKA,QAVV;AAWLmB,gBAAQX,GAAGY,eAAH,GAAqBZ,GAAGY,eAAH,CAAmBC,OAAxC,GAAkD,EAXrD;AAYLC,kBAAUd,GAAGe,SAZR;AAaLC,oBAAYhB,GAAGiB,WAbV;AAcLhB,kBAAUD,EAdL;AAeLkB,gBAAQlB,GAAGkB,MAfN;AAgBLxB,gBAAQ,KAAKJ,KAAL,CAAWI,MAhBd;AAiBLyB,kBAAU,KAAKC,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAjBL;AAkBLxB,oBAAY,KAAKA,UAlBZ;AAmBLD,gBAAQ,KAAKN,KAAL,CAAWM,MAnBd;AAoBL0B,0BAAkB,KAAKhC,KAAL,CAAWgC,gBApBxB;AAqBLC,2BAAmB,KAAKjC,KAAL,CAAWiC,iBArBzB;AAsBLC,qBAAa,KAAKlC,KAAL,CAAWkC,WAtBnB;AAuBLC,sBAAc,KAAKnC,KAAL,CAAWmC,YAvBpB;AAwBLC,qBAAa,KAAKpC,KAAL,CAAWoC,WAxBnB;AAyBLC,mBAAW,KAAKrC,KAAL,CAAWqC;AAzBjB,OAAP;AA2BD;;;uCAE6B;AAAA,UAAhBC,IAAgB,QAAhBA,IAAgB;AAAA,UAAVC,OAAU,QAAVA,OAAU;AAAA,UACrB5B,QADqB,GACT,KAAKX,KADI,CACrBW,QADqB;;;AAG5B,cAAQ2B,IAAR;AACE,aAAKE,0BAAeC,aAApB;AACE,cAAI,KAAKzC,KAAL,CAAW0C,kBAAf,EAAmC;AACjC,iBAAK1C,KAAL,CAAW0C,kBAAX,CAA8BH,OAA9B;AACD;;AAED,8CAAwB5B,QAAxB,EAAkC4B,OAAlC;AACA,+CAAyB5B,QAAzB,EAAmC4B,OAAnC;AACA,8CAAwB5B,QAAxB,EAAkC4B,OAAlC;AACA,gDAA0B5B,QAA1B,EAAoC4B,OAApC;AACA,iEAA2C5B,QAA3C,EAAqD4B,OAArD;;AAEA,eAAK,IAAII,IAAI,CAAb,EAAgBA,IAAIJ,QAAQK,YAAR,CAAqBC,MAAzC,EAAiDF,GAAjD,EAAsD;AAAA,uCACzCG,IADyC;AAElD,kBAAMC,aAAaR,QAAQK,YAAR,CAAqBD,CAArB,CAAnB;AACA,kBAAMK,kBAAkBT,QAAQS,eAAR,GACpBT,QAAQS,eAAR,CAAwBC,QAAxB,EADoB,GAEpB,IAFJ;;AAIA,kBAAIjD,QAAQ,CAAC,+BAAeW,SAASK,IAAT,CAAc+B,UAAd,CAAf,EAA0CD,IAA1C,CAAD,CAAZ;AACA,kBAAMI,QAAQX,QAAQY,MAAR,CAAeL,IAAf,CAAd;;AAEA,kBAAIE,eAAJ,EAAqB;AACnBhD,wBAAQ,4CAAgCW,QAAhC,EAA0CmC,IAA1C,EAAgDC,UAAhD,EAA4DC,eAA5D,CAAR;AACD;;AAEDhD,oBAAMoD,OAAN,CAAc,aAAK;AACjB,oBAAIF,UAAU,KAAK,CAAnB,EAAsB;AACpBG,oBAAEC,GAAF,CAAMJ,KAAN;AACD;AACF,eAJD;AAdkD;;AACpD,iBAAK,IAAMJ,IAAX,IAAmBP,QAAQY,MAA3B,EAAmC;AAAA,oBAAxBL,IAAwB;AAkBlC;AACF;;AAED,cAAI,KAAK9C,KAAL,CAAWuD,iBAAf,EAAkC;AAChC,iBAAKvD,KAAL,CAAWuD,iBAAX,CAA6BhB,OAA7B;AACD;AACD,cAAI,KAAKvC,KAAL,CAAW6B,QAAf,EAAyB;AACvB,iBAAK7B,KAAL,CAAW6B,QAAX,CACElB,SAASK,IAAT,CAAcwC,KAAd,EADF,EAEE7C,SAASiB,MAFX,EAGEjB,SAASW,eAAT,CAAyBC,OAH3B;AAKD;AACD;;AAEF,aAAKiB,0BAAeiB,aAApB;AACE,0CAAoB9C,QAApB,EAA8B4B,OAA9B;;AAEA,cAAI,KAAKvC,KAAL,CAAW0D,kBAAf,EAAmC;AACjC,iBAAK1D,KAAL,CAAW0D,kBAAX,CAA8BnB,OAA9B;AACD;AACD,eAAK,IAAMO,IAAX,IAAmBP,QAAQY,MAA3B,EAAmC;AACjC,gBAAMQ,OAAO,+BAAehD,SAASiB,MAAxB,EAAgCkB,IAAhC,CAAb;AACA,gBAAMI,SAAQX,QAAQY,MAAR,CAAeL,IAAf,CAAd;AACA,gBAAII,WAAU,KAAK,CAAnB,EAAsB;AACpBS,mBAAKL,GAAL,CAASJ,MAAT;AACD;AACF;AACD,cAAI,KAAKlD,KAAL,CAAW4D,iBAAf,EAAkC;AAChC,iBAAK5D,KAAL,CAAW4D,iBAAX,CAA6BrB,OAA7B;AACD;AACD,cAAI,KAAKvC,KAAL,CAAW6B,QAAf,EAAyB;AACvB,iBAAK7B,KAAL,CAAW6B,QAAX,CACElB,SAASK,IADX,EAEE6C,OAAOC,MAAP,CAAc,EAAd,EAAkBnD,SAASiB,MAA3B,CAFF,EAGEjB,SAASW,eAAT,CAAyBC,OAH3B;AAKD;AACD;;AAEF,aAAKiB,0BAAeuB,SAApB;AACE,cAAI,KAAK/D,KAAL,CAAWgE,cAAf,EAA+B;AAC7B,iBAAKhE,KAAL,CAAWgE,cAAX,CAA0BzB,OAA1B;AACD;;AAED;AACA;AACA,cAAI5B,SAASK,IAAT,CAAc6B,MAAd,KAAyB,CAA7B,EAAgC;AAC9BlC,qBAASK,IAAT,CAAciD,IAAd,CACE,KAAKjE,KAAL,CAAWkE,gBAAX,GACI,KAAKlE,KAAL,CAAWkE,gBAAX,EADJ,GAEI;AACE5B,iCAAgB,KAAKtC,KAAL,CAAWkC,WAAX,GAAyB,IAAzB,GAAgC,EAAhD,CADF;AAEEiC,oBAAM;AAFR,aAHN;AAQD,WATD,MASO;AACL,gBAAMC,YAAYzD,SAASK,IAAT,CAAcL,SAASK,IAAT,CAAc6B,MAAd,GAAuB,CAArC,CAAlB;AACA,gBAAMwB,gBAAgB,mCAAyBD,SAAzB,CAAtB;AACAzD,qBAASK,IAAT,CAAciD,IAAd,CACE,sCACEI,aADF,EAEED,UAAU9B,IAAV,IAAkB8B,UAAU9B,IAAV,CAAegC,QAAf,CAAwB,IAAxB,CAAlB,GAAkD,IAAlD,GAAyD,EAF3D,CADF;AAMD;;AAED,cAAI,KAAKtE,KAAL,CAAWuE,aAAf,EAA8B;AAC5B,iBAAKvE,KAAL,CAAWuE,aAAX,CAAyBhC,OAAzB;AACD;AACD,cAAI,KAAKvC,KAAL,CAAW6B,QAAf,EAAyB;AACvB,iBAAK7B,KAAL,CAAW6B,QAAX,CACElB,SAASK,IAAT,CAAcwC,KAAd,EADF,EAEE7C,SAASiB,MAFX,EAGEjB,SAASW,eAAT,CAAyBC,OAH3B;AAKD;AACD;;AAEF,aAAKiB,0BAAegC,YAApB;AACE,cAAIjC,QAAQK,YAAR,IAAwBL,QAAQK,YAAR,CAAqBC,MAAjD,EAAyD;AACvD,gBAAI,KAAK7C,KAAL,CAAWyE,iBAAf,EAAkC;AAChC,mBAAKzE,KAAL,CAAWyE,iBAAX,CAA6BlC,OAA7B;AACD;;AAED,gDAAwB5B,QAAxB,EAAkC4B,OAAlC;AACA,kEAA0C5B,QAA1C,EAAoD4B,OAApD;;AAEA5B,qBAASK,IAAT,CAAc0D,MAAd,CAAqBnC,QAAQK,YAAR,CAAqB,CAArB,CAArB,EAA8C,CAA9C;AACA,gBAAI,KAAK5C,KAAL,CAAW2E,gBAAf,EAAiC;AAC/B,mBAAK3E,KAAL,CAAW2E,gBAAX,CAA4BpC,OAA5B;AACD;AACD,gBAAI,KAAKvC,KAAL,CAAW6B,QAAf,EAAyB;AACvB,mBAAK7B,KAAL,CAAW6B,QAAX,CACElB,SAASK,IAAT,CAAcwC,KAAd,EADF,EAEE7C,SAASiB,MAFX,EAGEjB,SAASW,eAAT,CAAyBC,OAH3B;AAKD;AACF;AACD;;AAEF,aAAKiB,0BAAeoC,iBAApB;AACE,cAAI,6BAAUrC,QAAQsC,eAAlB,CAAJ,EAAwC;AACtC,gBAAI,KAAK7E,KAAL,CAAW8E,sBAAf,EAAuC;AACrC,mBAAK9E,KAAL,CAAW8E,sBAAX,CAAkCvC,OAAlC;AACD;AACD5B,qBAASiB,MAAT,CAAgBmD,WAAhB,CAA4BL,MAA5B,CAAmCnC,QAAQsC,eAA3C,EAA4D,CAA5D;AACA,gBAAI,KAAK7E,KAAL,CAAWgF,qBAAf,EAAsC;AACpC,mBAAKhF,KAAL,CAAWgF,qBAAX,CAAiCzC,OAAjC;AACD;AACD,gBAAI,KAAKvC,KAAL,CAAW6B,QAAf,EAAyB;AACvB,mBAAK7B,KAAL,CAAW6B,QAAX,CACElB,SAASK,IADX,EAEE6C,OAAOC,MAAP,CAAc,EAAd,EAAkBnD,SAASiB,MAA3B,CAFF,EAGEjB,SAASW,eAAT,CAAyBC,OAH3B;AAKD;AACF;AACD;;AAEF,aAAKiB,0BAAeyC,YAApB;AACE,cAAI,6BAAU1C,QAAQ2C,UAAlB,CAAJ,EAAmC;AACjC,gBAAI,KAAKlF,KAAL,CAAWmF,iBAAf,EAAkC;AAChC,mBAAKnF,KAAL,CAAWmF,iBAAX,CAA6B5C,OAA7B;AACD;AACD5B,qBAASiB,MAAT,CAAgBwD,MAAhB,CAAuBV,MAAvB,CAA8BnC,QAAQ2C,UAAtC,EAAkD,CAAlD;AACA,gBAAI,KAAKlF,KAAL,CAAWqF,gBAAf,EAAiC;AAC/B,mBAAKrF,KAAL,CAAWqF,gBAAX,CAA4B9C,OAA5B;AACD;AACD,gBAAI,KAAKvC,KAAL,CAAW6B,QAAf,EAAyB;AACvB,mBAAK7B,KAAL,CAAW6B,QAAX,CACElB,SAASK,IADX,EAEE6C,OAAOC,MAAP,CAAc,EAAd,EAAkBnD,SAASiB,MAA3B,CAFF,EAGEjB,SAASW,eAAT,CAAyBC,OAH3B;AAKD;AACF;AACD;;AAEF,aAAKiB,0BAAe8C,YAApB;AACE,cAAI,6BAAU/C,QAAQgD,UAAlB,CAAJ,EAAmC;AACjC,gBAAI,KAAKvF,KAAL,CAAWwF,iBAAf,EAAkC;AAChC,mBAAKxF,KAAL,CAAWwF,iBAAX,CAA6BjD,OAA7B;AACD;AACD5B,qBAASiB,MAAT,CAAgB6D,MAAhB,CAAuBf,MAAvB,CAA8BnC,QAAQgD,UAAtC,EAAkD,CAAlD;AACA,gBAAI,KAAKvF,KAAL,CAAW0F,gBAAf,EAAiC;AAC/B,mBAAK1F,KAAL,CAAW0F,gBAAX,CAA4BnD,OAA5B;AACD;AACD,gBAAI,KAAKvC,KAAL,CAAW6B,QAAf,EAAyB;AACvB,mBAAK7B,KAAL,CAAW6B,QAAX,CACElB,SAASK,IADX,EAEE6C,OAAOC,MAAP,CAAc,EAAd,EAAkBnD,SAASiB,MAA3B,CAFF,EAGEjB,SAASW,eAAT,CAAyBC,OAH3B;AAKD;AACF;AACD;;AAEF,aAAKiB,0BAAemD,oBAApB;AACE,cAAI,6BAAUpD,QAAQqD,kBAAlB,CAAJ,EAA2C;AACzCjF,qBAASiB,MAAT,CAAgBW,QAAQsD,MAAxB,EAAgCC,aAAhC,CAA8CC,OAA9C,CAAsDrB,MAAtD,CACEnC,QAAQqD,kBADV,EAEE,CAFF;AAIA,gBAAI,KAAK5F,KAAL,CAAW6B,QAAf,EAAyB;AACvB,mBAAK7B,KAAL,CAAW6B,QAAX,CACElB,SAASK,IADX,EAEE6C,OAAOC,MAAP,CAAc,EAAd,EAAkBnD,SAASiB,MAA3B,CAFF,EAGEjB,SAASW,eAAT,CAAyBC,OAH3B;AAKD;AACF;AACD;;AAEF,aAAKiB,0BAAewD,gBAApB;AACE,cAAI,6BAAUzD,QAAQ0D,cAAlB,KAAqC1D,QAAQQ,UAAR,GAAqBpC,SAASK,IAAT,CAAc6B,MAA5E,EAAoF;AAClF,gBAAIlC,SAASK,IAAT,CAAcuB,QAAQQ,UAAtB,EAAkCmD,UAAlC,CAA6CrD,MAA7C,KAAwD,CAA5D,EAA+D;AAC7D,qBAAOlC,SAASK,IAAT,CAAcuB,QAAQQ,UAAtB,EAAkCmD,UAAzC;AACD,aAFD,MAEO;AACLvF,uBAASK,IAAT,CAAcuB,QAAQQ,UAAtB,EAAkCmD,UAAlC,CAA6CxB,MAA7C,CAAoDnC,QAAQ0D,cAA5D,EAA4E,CAA5E;AACD;AACD,gBAAI,KAAKjG,KAAL,CAAW6B,QAAf,EAAyB;AACvB,mBAAK7B,KAAL,CAAW6B,QAAX,CACElB,SAASK,IAAT,CAAcwC,KAAd,EADF,EAEE7C,SAASiB,MAFX,EAGEjB,SAASW,eAAT,CAAyBC,OAH3B;AAKD;AACF;AACD;;AAEF;AACE,gBAAM,IAAI4E,KAAJ,CAAU,KAAKjG,QAAL,CAAc,mDAAd,CAAV,CAAN;AAhOJ;AAkOD;;;6BAEQ;AACP,aACE;AAAC,sCAAD,CAAuB,QAAvB;AAAA,UAAgC,OAAO,KAAKkG,YAAL,EAAvC;AACE;AAAA;AAAA;AACE,uBACE,cAAI,iBAAJ,IACA,gCADA,UAEG,KAAKpG,KAAL,CAAWqG,SAAX,SAA2B,KAAKrG,KAAL,CAAWqG,SAAtC,GAAoD,EAFvD;AAFJ;AAOE;AAAC,qCAAD;AAAA;AACG,iBAAKrG,KAAL,CAAWW,QAAX,IACC,KAAKX,KAAL,CAAWW,QAAX,CAAoBgB,WADrB,KAEE,KAAK3B,KAAL,CAAWsG,QAAX,GACC,KAAKtG,KAAL,CAAWsG,QADZ,GAEG,KAAKtG,KAAL,CAAWuG,aAAX,GACF;AAAC,qCAAD;AAAA,gBAAe,gBAAgB,KAAKvG,KAAL,CAAWwG,cAA1C;AACG,mBAAKxG,KAAL,CAAWuG;AADd,aADE,GAKF,8BAAC,uBAAD,OATH;AADH;AAPF;AADF,OADF;AAyBD;;;;EA3U0BE,gB;;AA8U7B1G,eAAe2G,SAAf,GAA2B;AACzB9F,6BAA2B+F,oBAAUC,IADZ;AAEzBrC,iBAAeoC,oBAAUE,IAFA;AAGzB7B,yBAAuB2B,oBAAUE,IAHR;AAIzBxB,oBAAkBsB,oBAAUE,IAJH;AAKzBnB,oBAAkBiB,oBAAUE,IALH;AAMzBlC,oBAAkBgC,oBAAUE,IANH;AAOzBjD,qBAAmB+C,oBAAUE,IAPJ;AAQzBtD,qBAAmBoD,oBAAUE,IARJ;AASzB7C,kBAAgB2C,oBAAUE,IATD;AAUzB/B,0BAAwB6B,oBAAUE,IAVT;AAWzB1B,qBAAmBwB,oBAAUE,IAXJ;AAYzBrB,qBAAmBmB,oBAAUE,IAZJ;AAazBpC,qBAAmBkC,oBAAUE,IAbJ;AAczBnD,sBAAoBiD,oBAAUE,IAdL;AAezBnE,sBAAoBiE,oBAAUE,IAfL;AAgBzBP,YAAUK,oBAAUG,IAhBK;AAiBzBT,aAAWM,oBAAUI,MAjBI;AAkBzBhG,iBAAe4F,oBAAUK,KAAV,CAAgB;AAC7BC,WAAON,oBAAUE,IAAV,CAAeK,UADO;AAE7BC,aAASR,oBAAUE,IAAV,CAAeK;AAFK,GAAhB,CAlBU;AAsBzB9F,4BAA0BuF,oBAAUE,IAtBX;AAuBzB3F,qBAAmByF,oBAAUS,KAvBJ;AAwBzBnG,eAAa0F,oBAAUU,MAxBE;AAyBzBlG,2BAAyBwF,oBAAUE,IAzBV;AA0BzB1G,gBAAcwG,oBAAUU,MA1BC;AA2BzB1G,YAAUgG,oBAAUU,MA3BK;AA4BzBjH,UAAQuG,oBAAUI,MA5BO;AA6BzBlF,YAAU8E,oBAAUE,IA7BK;AA8BzBvG,UAAQqG,oBAAUU,MA9BO;AA+BzBpF,qBAAmB0E,oBAAUC,IA/BJ;AAgCzB5E,oBAAkB2E,oBAAUU,MAhCH;AAiCzBnD,oBAAkByC,oBAAUE,IAjCH;AAkCzB3E,eAAayE,oBAAUC,IAlCE;AAmCzBzE,gBAAcwE,oBAAUC,IAnCC;AAoCzBxE,eAAauE,oBAAUS,KApCE;AAqCzB/E,aAAWsE,oBAAUU,MArCI;AAsCzBd,iBAAeI,oBAAUG,IAtCA;AAuCzBN,kBAAgBG,oBAAUS;AAvCD,CAA3B;;AA0CArH,eAAeuH,YAAf,GAA8B;AAC5BrF,qBAAmB,KADS;AAE5B7B,UAAQ,IAFoB;AAG5B4B,oBAAkB;AAChBuF,gBAAY;AAAA,aAAK,gCAAeC,CAAf,CAAL;AAAA,KADI;AAEhBC,YAAQ;AAAA,aAAK,4BAAWD,CAAX,CAAL;AAAA,KAFQ;AAGhBE,aAAS;AAHO,GAHU;AAQ5BtF,eAAauF;AARe,CAA9B;;AAWA5H,eAAe6H,iBAAf,GAAmC;AACjChH,6BAA2B+F,oBAAUC,IADJ;AAEjC/F,UAAQ8F,oBAAUU,MAFe;AAGjCtG,iBAAe4F,oBAAUK,KAAV,CAAgB;AAC7BC,WAAON,oBAAUE,IAAV,CAAeK,UADO;AAE7BC,aAASR,oBAAUE,IAAV,CAAeK;AAFK,GAAhB,CAHkB;AAOjClG,QAAM2F,oBAAUS,KAPiB;AAQjChG,4BAA0BuF,oBAAUE,IARH;AASjC3F,qBAAmByF,oBAAUS,KATI;AAUjCnG,eAAa0F,oBAAUU,MAVU;AAWjClG,2BAAyBwF,oBAAUE,IAXF;AAYjC1G,gBAAcwG,oBAAUU,MAZS;AAajChG,UAAQsF,oBAAUS,KAbe;AAcjC5F,YAAUmF,oBAAUS,KAda;AAejC1F,cAAYiF,oBAAUU,MAfW;AAgBjC1G,YAAUgG,oBAAUkB,GAhBa;AAiBjCjG,UAAQ+E,oBAAUU,MAjBe;AAkBjCjH,UAAQuG,oBAAUI,MAlBe;AAmBjC7G,YAAUyG,oBAAUE,IAnBa;AAoBjChF,YAAU8E,oBAAUE,IApBa;AAqBjCvG,UAAQqG,oBAAUU,MArBe;AAsBjC9G,cAAYoG,oBAAUU,MAtBW;AAuBjCrF,oBAAkB2E,oBAAUU,MAvBK;AAwBjCpF,qBAAmB0E,oBAAUC,IAxBI;AAyBjC1E,eAAayE,oBAAUC,IAzBU;AA0BjCzE,gBAAcwE,oBAAUC,IA1BS;AA2BjCxE,eAAauE,oBAAUS,KA3BU;AA4BjC/E,aAAWsE,oBAAUU;AA5BY,CAAnC;;kBA+BetH,c","file":"EditorControls.js","sourcesContent":["import DefaultEditor from './DefaultEditor';\nimport PropTypes from 'prop-types';\nimport React, {Component} from 'react';\nimport {bem, localizeString, plotlyTraceToCustomTrace, traceTypeToPlotlyInitFigure} from './lib';\nimport {\n shamefullyClearAxisTypes,\n shamefullyAdjustAxisRef,\n shamefullyAdjustGeo,\n shamefullyAddTableColumns,\n shamefullyCreateSplitStyleProps,\n shamefullyAdjustSplitStyleTargetContainers,\n shamefullyDeleteRelatedAnalysisTransforms,\n shamefullyAdjustSizeref,\n} from './shame';\nimport {EDITOR_ACTIONS} from './lib/constants';\nimport isNumeric from 'fast-isnumeric';\nimport nestedProperty from 'plotly.js/src/lib/nested_property';\nimport {categoryLayout, traceTypes} from 'lib/traceTypes';\nimport {ModalProvider} from 'components/containers';\nimport {DEFAULT_FONTS} from 'lib/constants';\nimport {EditorControlsContext} from './context';\n\nclass EditorControls extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.localize = key => localizeString(this.props.dictionaries || {}, this.props.locale, key);\n\n // we only need to compute this once.\n if (this.props.plotly) {\n this.plotSchema = this.props.plotly.PlotSchema.get();\n }\n }\n\n getChildContext() {\n const gd = this.props.graphDiv || {};\n return {\n advancedTraceTypeSelector: this.props.advancedTraceTypeSelector,\n config: gd._context,\n srcConverters: this.props.srcConverters,\n data: gd.data,\n dataSources: this.props.dataSources,\n dataSourceOptions: this.props.dataSourceOptions,\n dataSourceValueRenderer: this.props.dataSourceValueRenderer,\n dataSourceOptionRenderer: this.props.dataSourceOptionRenderer,\n dictionaries: this.props.dictionaries || {},\n localize: this.localize,\n frames: gd._transitionData ? gd._transitionData._frames : [],\n fullData: gd._fullData,\n fullLayout: gd._fullLayout,\n graphDiv: gd,\n layout: gd.layout,\n locale: this.props.locale,\n onUpdate: this.handleUpdate.bind(this),\n plotSchema: this.plotSchema,\n plotly: this.props.plotly,\n traceTypesConfig: this.props.traceTypesConfig,\n showFieldTooltips: this.props.showFieldTooltips,\n glByDefault: this.props.glByDefault,\n mapBoxAccess: this.props.mapBoxAccess,\n fontOptions: this.props.fontOptions,\n chartHelp: this.props.chartHelp,\n };\n }\n\n provideValue() {\n const gd = this.props.graphDiv || {};\n return {\n advancedTraceTypeSelector: this.props.advancedTraceTypeSelector,\n config: gd._context,\n srcConverters: this.props.srcConverters,\n data: gd.data,\n dataSources: this.props.dataSources,\n dataSourceOptions: this.props.dataSourceOptions,\n dataSourceValueRenderer: this.props.dataSourceValueRenderer,\n dataSourceOptionRenderer: this.props.dataSourceOptionRenderer,\n dictionaries: this.props.dictionaries || {},\n localize: this.localize,\n frames: gd._transitionData ? gd._transitionData._frames : [],\n fullData: gd._fullData,\n fullLayout: gd._fullLayout,\n graphDiv: gd,\n layout: gd.layout,\n locale: this.props.locale,\n onUpdate: this.handleUpdate.bind(this),\n plotSchema: this.plotSchema,\n plotly: this.props.plotly,\n traceTypesConfig: this.props.traceTypesConfig,\n showFieldTooltips: this.props.showFieldTooltips,\n glByDefault: this.props.glByDefault,\n mapBoxAccess: this.props.mapBoxAccess,\n fontOptions: this.props.fontOptions,\n chartHelp: this.props.chartHelp,\n };\n }\n\n handleUpdate({type, payload}) {\n const {graphDiv} = this.props;\n\n switch (type) {\n case EDITOR_ACTIONS.UPDATE_TRACES:\n if (this.props.beforeUpdateTraces) {\n this.props.beforeUpdateTraces(payload);\n }\n\n shamefullyAdjustSizeref(graphDiv, payload);\n shamefullyClearAxisTypes(graphDiv, payload);\n shamefullyAdjustAxisRef(graphDiv, payload);\n shamefullyAddTableColumns(graphDiv, payload);\n shamefullyAdjustSplitStyleTargetContainers(graphDiv, payload);\n\n for (let i = 0; i < payload.traceIndexes.length; i++) {\n for (const attr in payload.update) {\n const traceIndex = payload.traceIndexes[i];\n const splitTraceGroup = payload.splitTraceGroup\n ? payload.splitTraceGroup.toString()\n : null;\n\n let props = [nestedProperty(graphDiv.data[traceIndex], attr)];\n const value = payload.update[attr];\n\n if (splitTraceGroup) {\n props = shamefullyCreateSplitStyleProps(graphDiv, attr, traceIndex, splitTraceGroup);\n }\n\n props.forEach(p => {\n if (value !== void 0) {\n p.set(value);\n }\n });\n }\n }\n\n if (this.props.afterUpdateTraces) {\n this.props.afterUpdateTraces(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data.slice(),\n graphDiv.layout,\n graphDiv._transitionData._frames\n );\n }\n break;\n\n case EDITOR_ACTIONS.UPDATE_LAYOUT:\n shamefullyAdjustGeo(graphDiv, payload);\n\n if (this.props.beforeUpdateLayout) {\n this.props.beforeUpdateLayout(payload);\n }\n for (const attr in payload.update) {\n const prop = nestedProperty(graphDiv.layout, attr);\n const value = payload.update[attr];\n if (value !== void 0) {\n prop.set(value);\n }\n }\n if (this.props.afterUpdateLayout) {\n this.props.afterUpdateLayout(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data,\n Object.assign({}, graphDiv.layout),\n graphDiv._transitionData._frames\n );\n }\n break;\n\n case EDITOR_ACTIONS.ADD_TRACE:\n if (this.props.beforeAddTrace) {\n this.props.beforeAddTrace(payload);\n }\n\n // can't use default prop because plotly.js mutates it:\n // https://github.com/plotly/react-chart-editor/issues/509\n if (graphDiv.data.length === 0) {\n graphDiv.data.push(\n this.props.makeDefaultTrace\n ? this.props.makeDefaultTrace()\n : {\n type: `scatter${this.props.glByDefault ? 'gl' : ''}`,\n mode: 'markers',\n }\n );\n } else {\n const prevTrace = graphDiv.data[graphDiv.data.length - 1];\n const prevTraceType = plotlyTraceToCustomTrace(prevTrace);\n graphDiv.data.push(\n traceTypeToPlotlyInitFigure(\n prevTraceType,\n prevTrace.type && prevTrace.type.endsWith('gl') ? 'gl' : ''\n )\n );\n }\n\n if (this.props.afterAddTrace) {\n this.props.afterAddTrace(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data.slice(),\n graphDiv.layout,\n graphDiv._transitionData._frames\n );\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_TRACE:\n if (payload.traceIndexes && payload.traceIndexes.length) {\n if (this.props.beforeDeleteTrace) {\n this.props.beforeDeleteTrace(payload);\n }\n\n shamefullyAdjustAxisRef(graphDiv, payload);\n shamefullyDeleteRelatedAnalysisTransforms(graphDiv, payload);\n\n graphDiv.data.splice(payload.traceIndexes[0], 1);\n if (this.props.afterDeleteTrace) {\n this.props.afterDeleteTrace(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data.slice(),\n graphDiv.layout,\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_ANNOTATION:\n if (isNumeric(payload.annotationIndex)) {\n if (this.props.beforeDeleteAnnotation) {\n this.props.beforeDeleteAnnotation(payload);\n }\n graphDiv.layout.annotations.splice(payload.annotationIndex, 1);\n if (this.props.afterDeleteAnnotation) {\n this.props.afterDeleteAnnotation(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data,\n Object.assign({}, graphDiv.layout),\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_SHAPE:\n if (isNumeric(payload.shapeIndex)) {\n if (this.props.beforeDeleteShape) {\n this.props.beforeDeleteShape(payload);\n }\n graphDiv.layout.shapes.splice(payload.shapeIndex, 1);\n if (this.props.afterDeleteShape) {\n this.props.afterDeleteShape(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data,\n Object.assign({}, graphDiv.layout),\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_IMAGE:\n if (isNumeric(payload.imageIndex)) {\n if (this.props.beforeDeleteImage) {\n this.props.beforeDeleteImage(payload);\n }\n graphDiv.layout.images.splice(payload.imageIndex, 1);\n if (this.props.afterDeleteImage) {\n this.props.afterDeleteImage(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data,\n Object.assign({}, graphDiv.layout),\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_RANGESELECTOR:\n if (isNumeric(payload.rangeselectorIndex)) {\n graphDiv.layout[payload.axisId].rangeselector.buttons.splice(\n payload.rangeselectorIndex,\n 1\n );\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data,\n Object.assign({}, graphDiv.layout),\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_TRANSFORM:\n if (isNumeric(payload.transformIndex) && payload.traceIndex < graphDiv.data.length) {\n if (graphDiv.data[payload.traceIndex].transforms.length === 1) {\n delete graphDiv.data[payload.traceIndex].transforms;\n } else {\n graphDiv.data[payload.traceIndex].transforms.splice(payload.transformIndex, 1);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data.slice(),\n graphDiv.layout,\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n default:\n throw new Error(this.localize('must specify an action type to handleEditorUpdate'));\n }\n }\n\n render() {\n return (\n \n \n \n {this.props.graphDiv &&\n this.props.graphDiv._fullLayout &&\n (this.props.children ? (\n this.props.children\n ) : this.props.optionalPanel ? (\n \n {this.props.optionalPanel}\n \n ) : (\n \n ))}\n \n \n \n );\n }\n}\n\nEditorControls.propTypes = {\n advancedTraceTypeSelector: PropTypes.bool,\n afterAddTrace: PropTypes.func,\n afterDeleteAnnotation: PropTypes.func,\n afterDeleteShape: PropTypes.func,\n afterDeleteImage: PropTypes.func,\n afterDeleteTrace: PropTypes.func,\n afterUpdateLayout: PropTypes.func,\n afterUpdateTraces: PropTypes.func,\n beforeAddTrace: PropTypes.func,\n beforeDeleteAnnotation: PropTypes.func,\n beforeDeleteShape: PropTypes.func,\n beforeDeleteImage: PropTypes.func,\n beforeDeleteTrace: PropTypes.func,\n beforeUpdateLayout: PropTypes.func,\n beforeUpdateTraces: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n srcConverters: PropTypes.shape({\n toSrc: PropTypes.func.isRequired,\n fromSrc: PropTypes.func.isRequired,\n }),\n dataSourceOptionRenderer: PropTypes.func,\n dataSourceOptions: PropTypes.array,\n dataSources: PropTypes.object,\n dataSourceValueRenderer: PropTypes.func,\n dictionaries: PropTypes.object,\n graphDiv: PropTypes.object,\n locale: PropTypes.string,\n onUpdate: PropTypes.func,\n plotly: PropTypes.object,\n showFieldTooltips: PropTypes.bool,\n traceTypesConfig: PropTypes.object,\n makeDefaultTrace: PropTypes.func,\n glByDefault: PropTypes.bool,\n mapBoxAccess: PropTypes.bool,\n fontOptions: PropTypes.array,\n chartHelp: PropTypes.object,\n optionalPanel: PropTypes.node,\n menuPanelOrder: PropTypes.array,\n};\n\nEditorControls.defaultProps = {\n showFieldTooltips: false,\n locale: 'en',\n traceTypesConfig: {\n categories: _ => categoryLayout(_),\n traces: _ => traceTypes(_),\n complex: true,\n },\n fontOptions: DEFAULT_FONTS,\n};\n\nEditorControls.childContextTypes = {\n advancedTraceTypeSelector: PropTypes.bool,\n config: PropTypes.object,\n srcConverters: PropTypes.shape({\n toSrc: PropTypes.func.isRequired,\n fromSrc: PropTypes.func.isRequired,\n }),\n data: PropTypes.array,\n dataSourceOptionRenderer: PropTypes.func,\n dataSourceOptions: PropTypes.array,\n dataSources: PropTypes.object,\n dataSourceValueRenderer: PropTypes.func,\n dictionaries: PropTypes.object,\n frames: PropTypes.array,\n fullData: PropTypes.array,\n fullLayout: PropTypes.object,\n graphDiv: PropTypes.any,\n layout: PropTypes.object,\n locale: PropTypes.string,\n localize: PropTypes.func,\n onUpdate: PropTypes.func,\n plotly: PropTypes.object,\n plotSchema: PropTypes.object,\n traceTypesConfig: PropTypes.object,\n showFieldTooltips: PropTypes.bool,\n glByDefault: PropTypes.bool,\n mapBoxAccess: PropTypes.bool,\n fontOptions: PropTypes.array,\n chartHelp: PropTypes.object,\n};\n\nexport default EditorControls;\n"]} \ No newline at end of file +{"version":3,"sources":["../src/EditorControls.js"],"names":["EditorControls","props","context","localize","dictionaries","locale","key","plotly","plotSchema","PlotSchema","get","nextProps","updatePayload","length","handleDataSourceChange","gd","graphDiv","advancedTraceTypeSelector","config","_context","srcConverters","data","dataSources","dataSourceOptions","dataSourceValueRenderer","dataSourceOptionRenderer","frames","_transitionData","_frames","fullData","_fullData","fullLayout","_fullLayout","layout","onUpdate","handleUpdate","bind","traceTypesConfig","showFieldTooltips","glByDefault","mapBoxAccess","fontOptions","chartHelp","forEach","type","EDITOR_ACTIONS","UPDATE_TRACES","payload","beforeUpdateTraces","i","traceIndexes","attr","traceIndex","splitTraceGroup","toString","value","update","p","set","afterUpdateTraces","slice","UPDATE_LAYOUT","beforeUpdateLayout","prop","afterUpdateLayout","Object","assign","ADD_TRACE","beforeAddTrace","push","makeDefaultTrace","mode","prevTrace","prevTraceType","endsWith","afterAddTrace","DELETE_TRACE","beforeDeleteTrace","splice","afterDeleteTrace","DELETE_ANNOTATION","annotationIndex","beforeDeleteAnnotation","annotations","afterDeleteAnnotation","DELETE_SHAPE","shapeIndex","beforeDeleteShape","shapes","afterDeleteShape","DELETE_IMAGE","imageIndex","beforeDeleteImage","images","afterDeleteImage","DELETE_RANGESELECTOR","rangeselectorIndex","axisId","rangeselector","buttons","DELETE_TRANSFORM","transformIndex","transforms","Error","provideValue","className","children","optionalPanel","menuPanelOrder","Component","propTypes","PropTypes","bool","func","node","string","shape","toSrc","isRequired","fromSrc","array","object","defaultProps","categories","_","traces","complex","DEFAULT_FONTS","childContextTypes","any"],"mappings":"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","file":"EditorControls.js","sourcesContent":["import DefaultEditor from './DefaultEditor';\nimport PropTypes from 'prop-types';\nimport React, {Component} from 'react';\nimport {bem, localizeString, plotlyTraceToCustomTrace, traceTypeToPlotlyInitFigure} from './lib';\nimport {\n shamefullyClearAxisTypes,\n shamefullyAdjustAxisRef,\n shamefullyAdjustGeo,\n shamefullyAddTableColumns,\n shamefullyCreateSplitStyleProps,\n shamefullyAdjustSplitStyleTargetContainers,\n shamefullyDeleteRelatedAnalysisTransforms,\n shamefullyAdjustSizeref,\n} from './shame';\nimport {EDITOR_ACTIONS} from './lib/constants';\nimport isNumeric from 'fast-isnumeric';\nimport nestedProperty from 'plotly.js/src/lib/nested_property';\nimport {categoryLayout, traceTypes} from 'lib/traceTypes';\nimport {ModalProvider} from 'components/containers';\nimport {DEFAULT_FONTS} from 'lib/constants';\nimport {EditorControlsContext} from './context';\n\nclass EditorControls extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.localize = key => localizeString(this.props.dictionaries || {}, this.props.locale, key);\n\n // we only need to compute this once.\n if (this.props.plotly) {\n this.plotSchema = this.props.plotly.PlotSchema.get();\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const {updatePayload} = nextProps;\n if (updatePayload && updatePayload.length > 0) {\n this.handleDataSourceChange(updatePayload);\n }\n }\n\n getChildContext() {\n const gd = this.props.graphDiv || {};\n return {\n advancedTraceTypeSelector: this.props.advancedTraceTypeSelector,\n config: gd._context,\n srcConverters: this.props.srcConverters,\n data: gd.data,\n dataSources: this.props.dataSources,\n dataSourceOptions: this.props.dataSourceOptions,\n dataSourceValueRenderer: this.props.dataSourceValueRenderer,\n dataSourceOptionRenderer: this.props.dataSourceOptionRenderer,\n dictionaries: this.props.dictionaries || {},\n localize: this.localize,\n frames: gd._transitionData ? gd._transitionData._frames : [],\n fullData: gd._fullData,\n fullLayout: gd._fullLayout,\n graphDiv: gd,\n layout: gd.layout,\n locale: this.props.locale,\n onUpdate: this.handleUpdate.bind(this),\n plotSchema: this.plotSchema,\n plotly: this.props.plotly,\n traceTypesConfig: this.props.traceTypesConfig,\n showFieldTooltips: this.props.showFieldTooltips,\n glByDefault: this.props.glByDefault,\n mapBoxAccess: this.props.mapBoxAccess,\n fontOptions: this.props.fontOptions,\n chartHelp: this.props.chartHelp,\n };\n }\n\n provideValue() {\n const gd = this.props.graphDiv || {};\n return {\n advancedTraceTypeSelector: this.props.advancedTraceTypeSelector,\n config: gd._context,\n srcConverters: this.props.srcConverters,\n data: gd.data,\n dataSources: this.props.dataSources,\n dataSourceOptions: this.props.dataSourceOptions,\n dataSourceValueRenderer: this.props.dataSourceValueRenderer,\n dataSourceOptionRenderer: this.props.dataSourceOptionRenderer,\n dictionaries: this.props.dictionaries || {},\n localize: this.localize,\n frames: gd._transitionData ? gd._transitionData._frames : [],\n fullData: gd._fullData,\n fullLayout: gd._fullLayout,\n graphDiv: gd,\n layout: gd.layout,\n locale: this.props.locale,\n onUpdate: this.handleUpdate.bind(this),\n plotSchema: this.plotSchema,\n plotly: this.props.plotly,\n traceTypesConfig: this.props.traceTypesConfig,\n showFieldTooltips: this.props.showFieldTooltips,\n glByDefault: this.props.glByDefault,\n mapBoxAccess: this.props.mapBoxAccess,\n fontOptions: this.props.fontOptions,\n chartHelp: this.props.chartHelp,\n };\n }\n\n handleDataSourceChange(updatePayload) {\n if (updatePayload && updatePayload.length !== 0) {\n updatePayload.forEach(payload => {\n this.handleUpdate({\n type: EDITOR_ACTIONS.UPDATE_TRACES,\n payload,\n });\n });\n }\n }\n\n handleUpdate({type, payload}) {\n const {graphDiv} = this.props;\n\n switch (type) {\n case EDITOR_ACTIONS.UPDATE_TRACES:\n if (this.props.beforeUpdateTraces) {\n this.props.beforeUpdateTraces(payload);\n }\n\n shamefullyAdjustSizeref(graphDiv, payload);\n shamefullyClearAxisTypes(graphDiv, payload);\n shamefullyAdjustAxisRef(graphDiv, payload);\n shamefullyAddTableColumns(graphDiv, payload);\n shamefullyAdjustSplitStyleTargetContainers(graphDiv, payload);\n\n for (let i = 0; i < payload.traceIndexes.length; i++) {\n for (const attr in payload.update) {\n const traceIndex = payload.traceIndexes[i];\n const splitTraceGroup = payload.splitTraceGroup\n ? payload.splitTraceGroup.toString()\n : null;\n\n let props = [nestedProperty(graphDiv.data[traceIndex], attr)];\n const value = payload.update[attr];\n\n if (splitTraceGroup) {\n props = shamefullyCreateSplitStyleProps(graphDiv, attr, traceIndex, splitTraceGroup);\n }\n\n props.forEach(p => {\n if (value !== void 0) {\n p.set(value);\n }\n });\n }\n }\n\n if (this.props.afterUpdateTraces) {\n this.props.afterUpdateTraces(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data.slice(),\n graphDiv.layout,\n graphDiv._transitionData._frames\n );\n }\n break;\n\n case EDITOR_ACTIONS.UPDATE_LAYOUT:\n shamefullyAdjustGeo(graphDiv, payload);\n\n if (this.props.beforeUpdateLayout) {\n this.props.beforeUpdateLayout(payload);\n }\n for (const attr in payload.update) {\n const prop = nestedProperty(graphDiv.layout, attr);\n const value = payload.update[attr];\n if (value !== void 0) {\n prop.set(value);\n }\n }\n if (this.props.afterUpdateLayout) {\n this.props.afterUpdateLayout(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data,\n Object.assign({}, graphDiv.layout),\n graphDiv._transitionData._frames\n );\n }\n break;\n\n case EDITOR_ACTIONS.ADD_TRACE:\n if (this.props.beforeAddTrace) {\n this.props.beforeAddTrace(payload);\n }\n\n // can't use default prop because plotly.js mutates it:\n // https://github.com/plotly/react-chart-editor/issues/509\n if (graphDiv.data.length === 0) {\n graphDiv.data.push(\n this.props.makeDefaultTrace\n ? this.props.makeDefaultTrace()\n : {\n type: `scatter${this.props.glByDefault ? 'gl' : ''}`,\n mode: 'markers',\n }\n );\n } else {\n const prevTrace = graphDiv.data[graphDiv.data.length - 1];\n const prevTraceType = plotlyTraceToCustomTrace(prevTrace);\n graphDiv.data.push(\n traceTypeToPlotlyInitFigure(\n prevTraceType,\n prevTrace.type && prevTrace.type.endsWith('gl') ? 'gl' : ''\n )\n );\n }\n\n if (this.props.afterAddTrace) {\n this.props.afterAddTrace(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data.slice(),\n graphDiv.layout,\n graphDiv._transitionData._frames\n );\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_TRACE:\n if (payload.traceIndexes && payload.traceIndexes.length) {\n if (this.props.beforeDeleteTrace) {\n this.props.beforeDeleteTrace(payload);\n }\n\n shamefullyAdjustAxisRef(graphDiv, payload);\n shamefullyDeleteRelatedAnalysisTransforms(graphDiv, payload);\n\n graphDiv.data.splice(payload.traceIndexes[0], 1);\n if (this.props.afterDeleteTrace) {\n this.props.afterDeleteTrace(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data.slice(),\n graphDiv.layout,\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_ANNOTATION:\n if (isNumeric(payload.annotationIndex)) {\n if (this.props.beforeDeleteAnnotation) {\n this.props.beforeDeleteAnnotation(payload);\n }\n graphDiv.layout.annotations.splice(payload.annotationIndex, 1);\n if (this.props.afterDeleteAnnotation) {\n this.props.afterDeleteAnnotation(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data,\n Object.assign({}, graphDiv.layout),\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_SHAPE:\n if (isNumeric(payload.shapeIndex)) {\n if (this.props.beforeDeleteShape) {\n this.props.beforeDeleteShape(payload);\n }\n graphDiv.layout.shapes.splice(payload.shapeIndex, 1);\n if (this.props.afterDeleteShape) {\n this.props.afterDeleteShape(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data,\n Object.assign({}, graphDiv.layout),\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_IMAGE:\n if (isNumeric(payload.imageIndex)) {\n if (this.props.beforeDeleteImage) {\n this.props.beforeDeleteImage(payload);\n }\n graphDiv.layout.images.splice(payload.imageIndex, 1);\n if (this.props.afterDeleteImage) {\n this.props.afterDeleteImage(payload);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data,\n Object.assign({}, graphDiv.layout),\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_RANGESELECTOR:\n if (isNumeric(payload.rangeselectorIndex)) {\n graphDiv.layout[payload.axisId].rangeselector.buttons.splice(\n payload.rangeselectorIndex,\n 1\n );\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data,\n Object.assign({}, graphDiv.layout),\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n case EDITOR_ACTIONS.DELETE_TRANSFORM:\n if (isNumeric(payload.transformIndex) && payload.traceIndex < graphDiv.data.length) {\n if (graphDiv.data[payload.traceIndex].transforms.length === 1) {\n delete graphDiv.data[payload.traceIndex].transforms;\n } else {\n graphDiv.data[payload.traceIndex].transforms.splice(payload.transformIndex, 1);\n }\n if (this.props.onUpdate) {\n this.props.onUpdate(\n graphDiv.data.slice(),\n graphDiv.layout,\n graphDiv._transitionData._frames\n );\n }\n }\n break;\n\n default:\n throw new Error(this.localize('must specify an action type to handleEditorUpdate'));\n }\n }\n\n render() {\n return (\n \n \n \n {this.props.graphDiv &&\n this.props.graphDiv._fullLayout &&\n (this.props.children ? (\n this.props.children\n ) : this.props.optionalPanel ? (\n \n {this.props.optionalPanel}\n \n ) : (\n \n ))}\n \n \n \n );\n }\n}\n\nEditorControls.propTypes = {\n advancedTraceTypeSelector: PropTypes.bool,\n afterAddTrace: PropTypes.func,\n afterDeleteAnnotation: PropTypes.func,\n afterDeleteShape: PropTypes.func,\n afterDeleteImage: PropTypes.func,\n afterDeleteTrace: PropTypes.func,\n afterUpdateLayout: PropTypes.func,\n afterUpdateTraces: PropTypes.func,\n beforeAddTrace: PropTypes.func,\n beforeDeleteAnnotation: PropTypes.func,\n beforeDeleteShape: PropTypes.func,\n beforeDeleteImage: PropTypes.func,\n beforeDeleteTrace: PropTypes.func,\n beforeUpdateLayout: PropTypes.func,\n beforeUpdateTraces: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n srcConverters: PropTypes.shape({\n toSrc: PropTypes.func.isRequired,\n fromSrc: PropTypes.func.isRequired,\n }),\n dataSourceOptionRenderer: PropTypes.func,\n dataSourceOptions: PropTypes.array,\n dataSources: PropTypes.object,\n dataSourceValueRenderer: PropTypes.func,\n dictionaries: PropTypes.object,\n graphDiv: PropTypes.object,\n locale: PropTypes.string,\n onUpdate: PropTypes.func,\n plotly: PropTypes.object,\n showFieldTooltips: PropTypes.bool,\n traceTypesConfig: PropTypes.object,\n makeDefaultTrace: PropTypes.func,\n glByDefault: PropTypes.bool,\n mapBoxAccess: PropTypes.bool,\n fontOptions: PropTypes.array,\n chartHelp: PropTypes.object,\n optionalPanel: PropTypes.node,\n menuPanelOrder: PropTypes.array,\n updatePayload: PropTypes.array,\n};\n\nEditorControls.defaultProps = {\n showFieldTooltips: false,\n locale: 'en',\n traceTypesConfig: {\n categories: _ => categoryLayout(_),\n traces: _ => traceTypes(_),\n complex: true,\n },\n fontOptions: DEFAULT_FONTS,\n};\n\nEditorControls.childContextTypes = {\n advancedTraceTypeSelector: PropTypes.bool,\n config: PropTypes.object,\n srcConverters: PropTypes.shape({\n toSrc: PropTypes.func.isRequired,\n fromSrc: PropTypes.func.isRequired,\n }),\n data: PropTypes.array,\n dataSourceOptionRenderer: PropTypes.func,\n dataSourceOptions: PropTypes.array,\n dataSources: PropTypes.object,\n dataSourceValueRenderer: PropTypes.func,\n dictionaries: PropTypes.object,\n frames: PropTypes.array,\n fullData: PropTypes.array,\n fullLayout: PropTypes.object,\n graphDiv: PropTypes.any,\n layout: PropTypes.object,\n locale: PropTypes.string,\n localize: PropTypes.func,\n onUpdate: PropTypes.func,\n plotly: PropTypes.object,\n plotSchema: PropTypes.object,\n traceTypesConfig: PropTypes.object,\n showFieldTooltips: PropTypes.bool,\n glByDefault: PropTypes.bool,\n mapBoxAccess: PropTypes.bool,\n fontOptions: PropTypes.array,\n chartHelp: PropTypes.object,\n};\n\nexport default EditorControls;\n"]} \ No newline at end of file diff --git a/lib/PlotlyEditor.js b/lib/PlotlyEditor.js index 558074fc7..ec70672dc 100644 --- a/lib/PlotlyEditor.js +++ b/lib/PlotlyEditor.js @@ -80,7 +80,8 @@ var PlotlyEditor = function (_Component) { fontOptions: this.props.fontOptions, chartHelp: this.props.chartHelp, optionalPanel: this.props.optionalPanel, - menuPanelOrder: this.props.menuPanelOrder + menuPanelOrder: this.props.menuPanelOrder, + updatePayload: this.props.updatePayload }, this.props.children ), @@ -136,7 +137,8 @@ PlotlyEditor.propTypes = { fontOptions: _propTypes2.default.array, chartHelp: _propTypes2.default.object, optionalPanel: _propTypes2.default.any, - menuPanelOrder: _propTypes2.default.array + menuPanelOrder: _propTypes2.default.array, + updatePayload: _propTypes2.default.array }; PlotlyEditor.defaultProps = { diff --git a/lib/PlotlyEditor.js.map b/lib/PlotlyEditor.js.map index e9f41d78a..3c06925e1 100644 --- a/lib/PlotlyEditor.js.map +++ b/lib/PlotlyEditor.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/PlotlyEditor.js"],"names":["PlotlyEditor","props","state","graphDiv","PlotComponent","plotly","handleRender","bind","fig","setState","onRender","data","layout","_transitionData","_frames","hideControls","dataSources","dataSourceOptions","onUpdate","advancedTraceTypeSelector","locale","traceTypesConfig","dictionaries","showFieldTooltips","srcConverters","makeDefaultTrace","glByDefault","Boolean","config","mapboxAccessToken","fontOptions","chartHelp","optionalPanel","menuPanelOrder","children","width","height","frames","useResizeHandler","debug","divId","Component","propTypes","PropTypes","any","object","array","func","bool","string","shape","toSrc","isRequired","fromSrc","defaultProps","DEFAULT_FONTS"],"mappings":"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","file":"PlotlyEditor.js","sourcesContent":["import React, {Component} from 'react';\nimport createPlotComponent from 'react-plotly.js/factory';\nimport EditorControls from './EditorControls';\nimport PropTypes from 'prop-types';\nimport {DEFAULT_FONTS} from 'lib/constants';\n\nclass PlotlyEditor extends Component {\n constructor(props) {\n super();\n this.state = {graphDiv: {}};\n this.PlotComponent = createPlotComponent(props.plotly);\n this.handleRender = this.handleRender.bind(this);\n }\n\n handleRender(fig, graphDiv) {\n this.setState({graphDiv});\n if (this.props.onRender) {\n this.props.onRender(graphDiv.data, graphDiv.layout, graphDiv._transitionData._frames);\n }\n }\n\n render() {\n return (\n
\n {!this.props.hideControls && (\n \n {this.props.children}\n \n )}\n
\n \n
\n
\n );\n }\n}\n\nPlotlyEditor.propTypes = {\n children: PropTypes.any,\n layout: PropTypes.object,\n data: PropTypes.array,\n config: PropTypes.object,\n dataSourceOptions: PropTypes.array,\n dataSources: PropTypes.object,\n frames: PropTypes.array,\n onUpdate: PropTypes.func,\n onRender: PropTypes.func,\n plotly: PropTypes.object,\n useResizeHandler: PropTypes.bool,\n debug: PropTypes.bool,\n advancedTraceTypeSelector: PropTypes.bool,\n locale: PropTypes.string,\n traceTypesConfig: PropTypes.object,\n dictionaries: PropTypes.object,\n divId: PropTypes.string,\n hideControls: PropTypes.bool,\n showFieldTooltips: PropTypes.bool,\n srcConverters: PropTypes.shape({\n toSrc: PropTypes.func.isRequired,\n fromSrc: PropTypes.func.isRequired,\n }),\n makeDefaultTrace: PropTypes.func,\n glByDefault: PropTypes.bool,\n fontOptions: PropTypes.array,\n chartHelp: PropTypes.object,\n optionalPanel: PropTypes.any,\n menuPanelOrder: PropTypes.array,\n};\n\nPlotlyEditor.defaultProps = {\n hideControls: false,\n showFieldTooltips: false,\n fontOptions: DEFAULT_FONTS,\n};\n\nexport default PlotlyEditor;\n"]} \ No newline at end of file +{"version":3,"sources":["../src/PlotlyEditor.js"],"names":["PlotlyEditor","props","state","graphDiv","PlotComponent","plotly","handleRender","bind","fig","setState","onRender","data","layout","_transitionData","_frames","hideControls","dataSources","dataSourceOptions","onUpdate","advancedTraceTypeSelector","locale","traceTypesConfig","dictionaries","showFieldTooltips","srcConverters","makeDefaultTrace","glByDefault","Boolean","config","mapboxAccessToken","fontOptions","chartHelp","optionalPanel","menuPanelOrder","updatePayload","children","width","height","frames","useResizeHandler","debug","divId","Component","propTypes","PropTypes","any","object","array","func","bool","string","shape","toSrc","isRequired","fromSrc","defaultProps","DEFAULT_FONTS"],"mappings":"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","file":"PlotlyEditor.js","sourcesContent":["import React, {Component} from 'react';\nimport createPlotComponent from 'react-plotly.js/factory';\nimport EditorControls from './EditorControls';\nimport PropTypes from 'prop-types';\nimport {DEFAULT_FONTS} from 'lib/constants';\n\nclass PlotlyEditor extends Component {\n constructor(props) {\n super();\n this.state = {graphDiv: {}};\n this.PlotComponent = createPlotComponent(props.plotly);\n this.handleRender = this.handleRender.bind(this);\n }\n\n handleRender(fig, graphDiv) {\n this.setState({graphDiv});\n if (this.props.onRender) {\n this.props.onRender(graphDiv.data, graphDiv.layout, graphDiv._transitionData._frames);\n }\n }\n\n render() {\n return (\n
\n {!this.props.hideControls && (\n \n {this.props.children}\n \n )}\n
\n \n
\n
\n );\n }\n}\n\nPlotlyEditor.propTypes = {\n children: PropTypes.any,\n layout: PropTypes.object,\n data: PropTypes.array,\n config: PropTypes.object,\n dataSourceOptions: PropTypes.array,\n dataSources: PropTypes.object,\n frames: PropTypes.array,\n onUpdate: PropTypes.func,\n onRender: PropTypes.func,\n plotly: PropTypes.object,\n useResizeHandler: PropTypes.bool,\n debug: PropTypes.bool,\n advancedTraceTypeSelector: PropTypes.bool,\n locale: PropTypes.string,\n traceTypesConfig: PropTypes.object,\n dictionaries: PropTypes.object,\n divId: PropTypes.string,\n hideControls: PropTypes.bool,\n showFieldTooltips: PropTypes.bool,\n srcConverters: PropTypes.shape({\n toSrc: PropTypes.func.isRequired,\n fromSrc: PropTypes.func.isRequired,\n }),\n makeDefaultTrace: PropTypes.func,\n glByDefault: PropTypes.bool,\n fontOptions: PropTypes.array,\n chartHelp: PropTypes.object,\n optionalPanel: PropTypes.any,\n menuPanelOrder: PropTypes.array,\n updatePayload: PropTypes.array,\n};\n\nPlotlyEditor.defaultProps = {\n hideControls: false,\n showFieldTooltips: false,\n fontOptions: DEFAULT_FONTS,\n};\n\nexport default PlotlyEditor;\n"]} \ No newline at end of file diff --git a/lib/components/containers/PlotlyPanel.js b/lib/components/containers/PlotlyPanel.js index 38c6a5571..5ecc2d74c 100644 --- a/lib/components/containers/PlotlyPanel.js +++ b/lib/components/containers/PlotlyPanel.js @@ -71,9 +71,7 @@ var PanelErrorImpl = function (_Component) { return PanelErrorImpl; }(_react.Component); -PanelErrorImpl.contextTypes = { - localize: _propTypes2.default.func -}; +PanelErrorImpl.contextType = _context.EditorControlsContext; var PanelError = PanelErrorImpl; diff --git a/lib/components/containers/PlotlyPanel.js.map b/lib/components/containers/PlotlyPanel.js.map index 6e5ba16bc..4d656a370 100644 --- a/lib/components/containers/PlotlyPanel.js.map +++ b/lib/components/containers/PlotlyPanel.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../../src/components/containers/PlotlyPanel.js"],"names":["PanelErrorImpl","_","context","localize","EmbedIconIcon","Component","contextTypes","PropTypes","func","PanelError","Panel","props","state","individualFoldStates","hasError","toggleFolds","bind","toggleFold","deleteContainer","deleteAction","setState","hasOpen","length","some","s","map","index","$toggle","numFolds","React","Children","forEach","children","child","type","plotly_editor_traits","foldable","newFoldStates","Array","fill","addAction","e","i","calculateFolds","provideValue","newChildren","key","folded","noPadding","showExpandCollapse","propTypes","object","node","bool","defaultProps","childContextTypes","PlotlyPanel","no_visibility_forcing"],"mappings":"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","file":"PlotlyPanel.js","sourcesContent":["import PanelHeader from './PanelHeader';\nimport PanelEmpty from './PanelEmpty';\nimport PropTypes from 'prop-types';\nimport React, {Component, cloneElement} from 'react';\nimport update from 'immutability-helper';\nimport {bem} from 'lib';\nimport {EmbedIconIcon} from 'plotly-icons';\nimport {PlotlyPanelContext} from '../../context';\n\nclass PanelErrorImpl extends Component {\n render() {\n const {localize: _} = this.context;\n\n return (\n \n

{_('This panel could not be displayed due to an error.')}

\n
\n );\n }\n}\n\nPanelErrorImpl.contextTypes = {\n localize: PropTypes.func,\n};\n\nconst PanelError = PanelErrorImpl;\n\nexport class Panel extends Component {\n constructor(props) {\n super(props);\n this.state = {\n individualFoldStates: [],\n hasError: false,\n };\n this.toggleFolds = this.toggleFolds.bind(this);\n this.toggleFold = this.toggleFold.bind(this);\n }\n\n getChildContext() {\n return {\n deleteContainer: this.props.deleteAction ? this.props.deleteAction : null,\n };\n }\n\n provideValue() {\n return {\n deleteContainer: this.props.deleteAction ? this.props.deleteAction : null,\n };\n }\n\n componentDidCatch() {\n this.setState({hasError: true});\n }\n\n toggleFolds() {\n const {individualFoldStates} = this.state;\n const hasOpen = individualFoldStates.length > 0 && individualFoldStates.some(s => s !== true);\n this.setState({\n individualFoldStates: individualFoldStates.map(() => hasOpen),\n });\n }\n\n toggleFold(index) {\n this.setState(update(this.state, {individualFoldStates: {$toggle: [index]}}));\n }\n\n calculateFolds() {\n // to get proper number of child folds and initialize component state\n let numFolds = 0;\n\n React.Children.forEach(this.props.children, child => {\n if (((child && child.type && child.type.plotly_editor_traits) || {}).foldable) {\n numFolds++;\n }\n });\n\n if (this.state.individualFoldStates.length !== numFolds) {\n const newFoldStates = new Array(numFolds).fill(false);\n this.setState({\n individualFoldStates: this.props.addAction\n ? newFoldStates.map((e, i) => i !== numFolds - 1)\n : newFoldStates,\n });\n }\n }\n\n componentDidUpdate() {\n this.calculateFolds();\n }\n componentDidMount() {\n this.calculateFolds();\n }\n\n render() {\n const {individualFoldStates, hasError} = this.state;\n\n if (hasError) {\n return (\n \n \n \n );\n }\n\n const newChildren = React.Children.map(this.props.children, (child, index) => {\n if (((child && child.type && child.type.plotly_editor_traits) || {}).foldable) {\n return cloneElement(child, {\n key: index,\n folded: individualFoldStates[index] || false,\n toggleFold: () => this.toggleFold(index),\n });\n }\n return child;\n });\n\n return (\n \n
\n 1}\n toggleFolds={this.toggleFolds}\n hasOpen={individualFoldStates.some(s => s === false)}\n />\n
{newChildren}
\n
\n
\n );\n }\n}\n\nPanel.propTypes = {\n addAction: PropTypes.object,\n children: PropTypes.node,\n deleteAction: PropTypes.func,\n noPadding: PropTypes.bool,\n showExpandCollapse: PropTypes.bool,\n};\n\nPanel.defaultProps = {\n showExpandCollapse: true,\n};\n\nPanel.contextTypes = {\n localize: PropTypes.func,\n};\n\nPanel.childContextTypes = {\n deleteContainer: PropTypes.func,\n};\n\nclass PlotlyPanel extends Panel {}\n\nPlotlyPanel.plotly_editor_traits = {\n no_visibility_forcing: true,\n};\n\nexport default PlotlyPanel;\n"]} \ No newline at end of file +{"version":3,"sources":["../../../src/components/containers/PlotlyPanel.js"],"names":["PanelErrorImpl","_","context","localize","EmbedIconIcon","Component","contextType","EditorControlsContext","PanelError","Panel","props","state","individualFoldStates","hasError","toggleFolds","bind","toggleFold","deleteContainer","deleteAction","setState","hasOpen","length","some","s","map","index","$toggle","numFolds","React","Children","forEach","children","child","type","plotly_editor_traits","foldable","newFoldStates","Array","fill","addAction","e","i","calculateFolds","provideValue","newChildren","key","folded","noPadding","showExpandCollapse","propTypes","PropTypes","object","node","func","bool","defaultProps","contextTypes","childContextTypes","PlotlyPanel","no_visibility_forcing"],"mappings":"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","file":"PlotlyPanel.js","sourcesContent":["import PanelHeader from './PanelHeader';\nimport PanelEmpty from './PanelEmpty';\nimport PropTypes from 'prop-types';\nimport React, {Component, cloneElement} from 'react';\nimport update from 'immutability-helper';\nimport {bem} from 'lib';\nimport {EmbedIconIcon} from 'plotly-icons';\nimport {EditorControlsContext, PlotlyPanelContext} from '../../context';\n\nclass PanelErrorImpl extends Component {\n render() {\n const {localize: _} = this.context;\n\n return (\n \n

{_('This panel could not be displayed due to an error.')}

\n
\n );\n }\n}\n\nPanelErrorImpl.contextType = EditorControlsContext;\n\nconst PanelError = PanelErrorImpl;\n\nexport class Panel extends Component {\n constructor(props) {\n super(props);\n this.state = {\n individualFoldStates: [],\n hasError: false,\n };\n this.toggleFolds = this.toggleFolds.bind(this);\n this.toggleFold = this.toggleFold.bind(this);\n }\n\n getChildContext() {\n return {\n deleteContainer: this.props.deleteAction ? this.props.deleteAction : null,\n };\n }\n\n provideValue() {\n return {\n deleteContainer: this.props.deleteAction ? this.props.deleteAction : null,\n };\n }\n\n componentDidCatch() {\n this.setState({hasError: true});\n }\n\n toggleFolds() {\n const {individualFoldStates} = this.state;\n const hasOpen = individualFoldStates.length > 0 && individualFoldStates.some(s => s !== true);\n this.setState({\n individualFoldStates: individualFoldStates.map(() => hasOpen),\n });\n }\n\n toggleFold(index) {\n this.setState(update(this.state, {individualFoldStates: {$toggle: [index]}}));\n }\n\n calculateFolds() {\n // to get proper number of child folds and initialize component state\n let numFolds = 0;\n\n React.Children.forEach(this.props.children, child => {\n if (((child && child.type && child.type.plotly_editor_traits) || {}).foldable) {\n numFolds++;\n }\n });\n\n if (this.state.individualFoldStates.length !== numFolds) {\n const newFoldStates = new Array(numFolds).fill(false);\n this.setState({\n individualFoldStates: this.props.addAction\n ? newFoldStates.map((e, i) => i !== numFolds - 1)\n : newFoldStates,\n });\n }\n }\n\n componentDidUpdate() {\n this.calculateFolds();\n }\n componentDidMount() {\n this.calculateFolds();\n }\n\n render() {\n const {individualFoldStates, hasError} = this.state;\n\n if (hasError) {\n return (\n \n \n \n );\n }\n\n const newChildren = React.Children.map(this.props.children, (child, index) => {\n if (((child && child.type && child.type.plotly_editor_traits) || {}).foldable) {\n return cloneElement(child, {\n key: index,\n folded: individualFoldStates[index] || false,\n toggleFold: () => this.toggleFold(index),\n });\n }\n return child;\n });\n\n return (\n \n
\n 1}\n toggleFolds={this.toggleFolds}\n hasOpen={individualFoldStates.some(s => s === false)}\n />\n
{newChildren}
\n
\n
\n );\n }\n}\n\nPanel.propTypes = {\n addAction: PropTypes.object,\n children: PropTypes.node,\n deleteAction: PropTypes.func,\n noPadding: PropTypes.bool,\n showExpandCollapse: PropTypes.bool,\n};\n\nPanel.defaultProps = {\n showExpandCollapse: true,\n};\n\nPanel.contextTypes = {\n localize: PropTypes.func,\n};\n\nPanel.childContextTypes = {\n deleteContainer: PropTypes.func,\n};\n\nclass PlotlyPanel extends Panel {}\n\nPlotlyPanel.plotly_editor_traits = {\n no_visibility_forcing: true,\n};\n\nexport default PlotlyPanel;\n"]} \ No newline at end of file diff --git a/lib/lib/index.js b/lib/lib/index.js index 198ae5483..8dbe2c652 100644 --- a/lib/lib/index.js +++ b/lib/lib/index.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.getFullTrace = exports.transpose = exports.traceTypeToAxisType = exports.striptags = exports.tooLight = exports.walkObject = exports.unpackPlotProps = exports.renderTraceIcon = exports.plotlyTraceToCustomTrace = exports.maybeTransposeData = exports.maybeAdjustSrc = exports.localizeString = exports.localize = exports.isPlainObject = exports.getDisplayName = exports.getSubplotTitle = exports.getAxisTitle = exports.getAllAxes = exports.dereference = exports.traceTypeToPlotlyInitFigure = exports.computeTraceOptionsFromSchema = exports.containerConnectedContextTypes = exports.connectTraceToPlot = exports.connectAggregationToTransform = exports.connectTransformToTrace = exports.connectRangeSelectorToAxis = exports.connectToContainer = exports.connectLayoutToPlot = exports.connectAxesToLayout = exports.connectImageToLayout = exports.connectUpdateMenuToLayout = exports.connectSliderToLayout = exports.connectShapeToLayout = exports.connectAnnotationToLayout = exports.connectNonCartesianSubplotToLayout = exports.connectCartesianSubplotToLayout = exports.clamp = exports.pascalCase = exports.camelCase = exports.removeNonWord = exports.upperCase = exports.lowerCase = exports.capitalize = exports.bem = exports.axisIdToAxisName = exports.adjustColorscale = undefined; +exports.EDITOR_ACTIONS = exports.getFullTrace = exports.transpose = exports.traceTypeToAxisType = exports.striptags = exports.tooLight = exports.walkObject = exports.unpackPlotProps = exports.renderTraceIcon = exports.plotlyTraceToCustomTrace = exports.maybeTransposeData = exports.maybeAdjustSrc = exports.localizeString = exports.localize = exports.isPlainObject = exports.getDisplayName = exports.getSubplotTitle = exports.getAxisTitle = exports.getAllAxes = exports.dereference = exports.traceTypeToPlotlyInitFigure = exports.computeTraceOptionsFromSchema = exports.containerConnectedContextTypes = exports.connectTraceToPlot = exports.connectAggregationToTransform = exports.connectTransformToTrace = exports.connectRangeSelectorToAxis = exports.connectToContainer = exports.connectLayoutToPlot = exports.connectAxesToLayout = exports.connectImageToLayout = exports.connectUpdateMenuToLayout = exports.connectSliderToLayout = exports.connectShapeToLayout = exports.connectAnnotationToLayout = exports.connectNonCartesianSubplotToLayout = exports.connectCartesianSubplotToLayout = exports.clamp = exports.pascalCase = exports.camelCase = exports.removeNonWord = exports.upperCase = exports.lowerCase = exports.capitalize = exports.bem = exports.axisIdToAxisName = exports.adjustColorscale = undefined; var _bem = require('./bem'); @@ -105,6 +105,8 @@ var _strings = require('./strings'); var _reactColorscales = require('react-colorscales'); +var _constants = require('./constants'); + function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -310,4 +312,5 @@ exports.striptags = _striptags2.default; exports.traceTypeToAxisType = _getAllAxes.traceTypeToAxisType; exports.transpose = transpose; exports.getFullTrace = getFullTrace; +exports.EDITOR_ACTIONS = _constants.EDITOR_ACTIONS; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/lib/index.js.map b/lib/lib/index.js.map index 42790de58..80092daf6 100644 --- a/lib/lib/index.js.map +++ b/lib/lib/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/lib/index.js"],"names":["PlotlyIcons","TOO_LIGHT_FACTOR","clamp","value","min","max","Math","getDisplayName","WrappedComponent","displayName","name","tooLight","color","hslColor","toHsl","l","renderTraceIcon","trace","prefix","gl","componentName","endsWith","slice","length","PlotLineIcon","transpose","originalArray","every","Array","isArray","a","map","longestArrayItem","forEach","newArray","outerIndex","innerIndex","push","specialTableCase","traceType","srcAttributePath","some","maybeTransposeData","data","isTransposable2DArray","includes","maybeAdjustSrc","src","config","fromSrc","adjustColorscale","colorscale","numberOfNeededColors","colorscaleType","repeat","repetitions","ceil","fill","reduce","b","concat","getFullTrace","props","context","fullTrace","fullData","fullDataArrayPosition","filter","t","traceIndexes","index","transforms","type","_fullInput","axisIdToAxisName","bem","capitalize","lowerCase","upperCase","removeNonWord","camelCase","pascalCase","connectCartesianSubplotToLayout","connectNonCartesianSubplotToLayout","connectAnnotationToLayout","connectShapeToLayout","connectSliderToLayout","connectUpdateMenuToLayout","connectImageToLayout","connectAxesToLayout","connectLayoutToPlot","connectToContainer","connectRangeSelectorToAxis","connectTransformToTrace","connectAggregationToTransform","connectTraceToPlot","containerConnectedContextTypes","computeTraceOptionsFromSchema","traceTypeToPlotlyInitFigure","dereference","getAllAxes","getAxisTitle","getSubplotTitle","isPlainObject","localize","localizeString","plotlyTraceToCustomTrace","unpackPlotProps","walkObject","striptags","traceTypeToAxisType"],"mappings":"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","file":"index.js","sourcesContent":["import bem from './bem';\nimport connectCartesianSubplotToLayout from './connectCartesianSubplotToLayout';\nimport connectNonCartesianSubplotToLayout from './connectNonCartesianSubplotToLayout';\nimport connectAnnotationToLayout from './connectAnnotationToLayout';\nimport connectShapeToLayout from './connectShapeToLayout';\nimport connectSliderToLayout from './connectSliderToLayout';\nimport connectImageToLayout from './connectImageToLayout';\nimport connectUpdateMenuToLayout from './connectUpdateMenuToLayout';\nimport connectRangeSelectorToAxis from './connectRangeSelectorToAxis';\nimport connectTransformToTrace from './connectTransformToTrace';\nimport connectAggregationToTransform from './connectAggregationToTransform';\nimport connectAxesToLayout from './connectAxesToLayout';\nimport connectLayoutToPlot from './connectLayoutToPlot';\nimport connectToContainer, {containerConnectedContextTypes} from './connectToContainer';\nimport {computeTraceOptionsFromSchema} from './computeTraceOptionsFromSchema';\nimport connectTraceToPlot from './connectTraceToPlot';\nimport dereference from './dereference';\nimport getAllAxes, {\n axisIdToAxisName,\n traceTypeToAxisType,\n getAxisTitle,\n getSubplotTitle,\n} from './getAllAxes';\nimport localize, {localizeString} from './localize';\nimport tinyColor from 'tinycolor2';\nimport unpackPlotProps from './unpackPlotProps';\nimport walkObject, {isPlainObject} from './walkObject';\nimport {traceTypeToPlotlyInitFigure, plotlyTraceToCustomTrace} from './customTraceType';\nimport * as PlotlyIcons from 'plotly-icons';\nimport striptags from './striptags';\nimport {capitalize, lowerCase, upperCase, removeNonWord, camelCase, pascalCase} from './strings';\nimport {getColorscale} from 'react-colorscales';\n\nconst TOO_LIGHT_FACTOR = 0.8;\n\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n\nfunction tooLight(color) {\n const hslColor = tinyColor(color).toHsl();\n return hslColor.l > TOO_LIGHT_FACTOR;\n}\n\nfunction renderTraceIcon(trace, prefix = 'Plot') {\n if (!trace) {\n return null;\n }\n const gl = 'gl';\n const componentName = `${prefix}${pascalCase(\n trace.endsWith(gl) ? trace.slice(0, -gl.length) : trace\n )}Icon`;\n\n return PlotlyIcons[componentName] ? PlotlyIcons[componentName] : PlotlyIcons.PlotLineIcon;\n}\n\nfunction transpose(originalArray) {\n // if we want to transpose a uni dimensional array\n if (originalArray.every(a => !Array.isArray(a))) {\n return originalArray.map(a => [a]);\n }\n\n let longestArrayItem = Array.isArray(originalArray[0]) ? originalArray[0].length : 1;\n\n originalArray.forEach(a => {\n // if it's not an array, it's a string\n const length = Array.isArray(a) ? a.length : 1;\n if (length > longestArrayItem) {\n longestArrayItem = length;\n }\n });\n\n const newArray = new Array(longestArrayItem);\n\n for (let outerIndex = 0; outerIndex < originalArray.length; outerIndex++) {\n if (!Array.isArray(originalArray[outerIndex])) {\n originalArray[outerIndex] = [originalArray[outerIndex]];\n }\n\n for (let innerIndex = 0; innerIndex < longestArrayItem; innerIndex++) {\n // ensure we have an array to push to\n if (!Array.isArray(newArray[innerIndex])) {\n newArray[innerIndex] = [];\n }\n\n const value =\n typeof originalArray[outerIndex][innerIndex] !== 'undefined'\n ? originalArray[outerIndex][innerIndex]\n : null;\n newArray[innerIndex].push(value);\n }\n }\n\n return newArray;\n}\n\nconst specialTableCase = (traceType, srcAttributePath) => {\n /* Just more user friendly\n * Table traces have many configuration options,\n * The below attributes can be 2d or 1d and will affect the plot differently\n * EX:\n * header.values = ['Jan', 'Feb', 'Mar'] => will put data in a row\n * header.values = [['Jan', 1], ['Feb', 2], ['Mar', 3]] => will create 3 columns\n * 1d arrays affect columns\n * 2d arrays affect rows within each column\n */\n return (\n traceType === 'table' &&\n [\n 'header.valuessrc',\n 'header.font.colorsrc',\n 'header.font.sizesrc',\n 'header.fill.colorsrc',\n 'columnwidthsrc',\n ].some(a => srcAttributePath.endsWith(a))\n );\n};\n\nfunction maybeTransposeData(data, srcAttributePath, traceType) {\n if (!data || (Array.isArray(data) && data.length === 0)) {\n return null;\n }\n\n const isTransposable2DArray =\n srcAttributePath.endsWith('zsrc') &&\n ['contour', 'contourgl', 'heatmap', 'heatmapgl', 'surface', 'carpet', 'contourcarpet'].includes(\n traceType\n );\n\n if (isTransposable2DArray) {\n return transpose(data);\n }\n\n if (\n specialTableCase(traceType, srcAttributePath) &&\n Array.isArray(data[0]) &&\n data.length === 1\n ) {\n return data[0];\n }\n\n return data;\n}\n\nfunction maybeAdjustSrc(src, srcAttributePath, traceType, config) {\n if (!src || (Array.isArray(src) && src.length === 0)) {\n return null;\n }\n\n if (specialTableCase(traceType, srcAttributePath) && src.length === 1) {\n return src[0];\n }\n\n return config && config.fromSrc ? config.fromSrc(src, traceType) : src;\n}\n\nfunction adjustColorscale(colorscale, numberOfNeededColors, colorscaleType, config) {\n if (config && config.repeat) {\n if (numberOfNeededColors < colorscale.length) {\n return colorscale.slice(0, numberOfNeededColors);\n }\n\n const repetitions = Math.ceil(numberOfNeededColors / colorscale.length);\n const newArray = new Array(repetitions).fill(colorscale);\n return newArray\n .reduce((a, b) => {\n return a.concat(b);\n }, [])\n .slice(0, numberOfNeededColors);\n }\n\n return getColorscale(colorscale, numberOfNeededColors, null, null, colorscaleType);\n}\n\nfunction getFullTrace(props, context) {\n let fullTrace = {};\n if (context.fullData && context.data) {\n if (props.fullDataArrayPosition) {\n // fullDataArrayPosition will be supplied in panels that have the canGroup prop\n fullTrace = context.fullData[props.fullDataArrayPosition[0]];\n } else {\n // for all other panels, we'll find fullTrace with the data index\n fullTrace = context.fullData.filter(t => t && props.traceIndexes[0] === t.index)[0];\n }\n\n // For transformed traces, we actually want to read in _fullInput because\n // there's original parent information that's more useful to the user there\n // This is true except for fit transforms, where reading in fullData is\n // what we want\n if (\n fullTrace.transforms &&\n !fullTrace.transforms.some(t => ['moving-average', 'fits'].includes(t.type)) &&\n !props.fullDataArrayPosition\n ) {\n fullTrace = fullTrace._fullInput;\n }\n }\n return fullTrace;\n}\n\nexport {\n adjustColorscale,\n axisIdToAxisName,\n bem,\n capitalize,\n lowerCase,\n upperCase,\n removeNonWord,\n camelCase,\n pascalCase,\n clamp,\n connectCartesianSubplotToLayout,\n connectNonCartesianSubplotToLayout,\n connectAnnotationToLayout,\n connectShapeToLayout,\n connectSliderToLayout,\n connectUpdateMenuToLayout,\n connectImageToLayout,\n connectAxesToLayout,\n connectLayoutToPlot,\n connectToContainer,\n connectRangeSelectorToAxis,\n connectTransformToTrace,\n connectAggregationToTransform,\n connectTraceToPlot,\n containerConnectedContextTypes,\n computeTraceOptionsFromSchema,\n traceTypeToPlotlyInitFigure,\n dereference,\n getAllAxes,\n getAxisTitle,\n getSubplotTitle,\n getDisplayName,\n isPlainObject,\n localize,\n localizeString,\n maybeAdjustSrc,\n maybeTransposeData,\n plotlyTraceToCustomTrace,\n renderTraceIcon,\n unpackPlotProps,\n walkObject,\n tooLight,\n striptags,\n traceTypeToAxisType,\n transpose,\n getFullTrace,\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../../src/lib/index.js"],"names":["PlotlyIcons","TOO_LIGHT_FACTOR","clamp","value","min","max","Math","getDisplayName","WrappedComponent","displayName","name","tooLight","color","hslColor","toHsl","l","renderTraceIcon","trace","prefix","gl","componentName","endsWith","slice","length","PlotLineIcon","transpose","originalArray","every","Array","isArray","a","map","longestArrayItem","forEach","newArray","outerIndex","innerIndex","push","specialTableCase","traceType","srcAttributePath","some","maybeTransposeData","data","isTransposable2DArray","includes","maybeAdjustSrc","src","config","fromSrc","adjustColorscale","colorscale","numberOfNeededColors","colorscaleType","repeat","repetitions","ceil","fill","reduce","b","concat","getFullTrace","props","context","fullTrace","fullData","fullDataArrayPosition","filter","t","traceIndexes","index","transforms","type","_fullInput","axisIdToAxisName","bem","capitalize","lowerCase","upperCase","removeNonWord","camelCase","pascalCase","connectCartesianSubplotToLayout","connectNonCartesianSubplotToLayout","connectAnnotationToLayout","connectShapeToLayout","connectSliderToLayout","connectUpdateMenuToLayout","connectImageToLayout","connectAxesToLayout","connectLayoutToPlot","connectToContainer","connectRangeSelectorToAxis","connectTransformToTrace","connectAggregationToTransform","connectTraceToPlot","containerConnectedContextTypes","computeTraceOptionsFromSchema","traceTypeToPlotlyInitFigure","dereference","getAllAxes","getAxisTitle","getSubplotTitle","isPlainObject","localize","localizeString","plotlyTraceToCustomTrace","unpackPlotProps","walkObject","striptags","traceTypeToAxisType","EDITOR_ACTIONS"],"mappings":"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","file":"index.js","sourcesContent":["import bem from './bem';\nimport connectCartesianSubplotToLayout from './connectCartesianSubplotToLayout';\nimport connectNonCartesianSubplotToLayout from './connectNonCartesianSubplotToLayout';\nimport connectAnnotationToLayout from './connectAnnotationToLayout';\nimport connectShapeToLayout from './connectShapeToLayout';\nimport connectSliderToLayout from './connectSliderToLayout';\nimport connectImageToLayout from './connectImageToLayout';\nimport connectUpdateMenuToLayout from './connectUpdateMenuToLayout';\nimport connectRangeSelectorToAxis from './connectRangeSelectorToAxis';\nimport connectTransformToTrace from './connectTransformToTrace';\nimport connectAggregationToTransform from './connectAggregationToTransform';\nimport connectAxesToLayout from './connectAxesToLayout';\nimport connectLayoutToPlot from './connectLayoutToPlot';\nimport connectToContainer, {containerConnectedContextTypes} from './connectToContainer';\nimport {computeTraceOptionsFromSchema} from './computeTraceOptionsFromSchema';\nimport connectTraceToPlot from './connectTraceToPlot';\nimport dereference from './dereference';\nimport getAllAxes, {\n axisIdToAxisName,\n traceTypeToAxisType,\n getAxisTitle,\n getSubplotTitle,\n} from './getAllAxes';\nimport localize, {localizeString} from './localize';\nimport tinyColor from 'tinycolor2';\nimport unpackPlotProps from './unpackPlotProps';\nimport walkObject, {isPlainObject} from './walkObject';\nimport {traceTypeToPlotlyInitFigure, plotlyTraceToCustomTrace} from './customTraceType';\nimport * as PlotlyIcons from 'plotly-icons';\nimport striptags from './striptags';\nimport {capitalize, lowerCase, upperCase, removeNonWord, camelCase, pascalCase} from './strings';\nimport {getColorscale} from 'react-colorscales';\nimport {EDITOR_ACTIONS} from './constants';\n\nconst TOO_LIGHT_FACTOR = 0.8;\n\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n\nfunction tooLight(color) {\n const hslColor = tinyColor(color).toHsl();\n return hslColor.l > TOO_LIGHT_FACTOR;\n}\n\nfunction renderTraceIcon(trace, prefix = 'Plot') {\n if (!trace) {\n return null;\n }\n const gl = 'gl';\n const componentName = `${prefix}${pascalCase(\n trace.endsWith(gl) ? trace.slice(0, -gl.length) : trace\n )}Icon`;\n\n return PlotlyIcons[componentName] ? PlotlyIcons[componentName] : PlotlyIcons.PlotLineIcon;\n}\n\nfunction transpose(originalArray) {\n // if we want to transpose a uni dimensional array\n if (originalArray.every(a => !Array.isArray(a))) {\n return originalArray.map(a => [a]);\n }\n\n let longestArrayItem = Array.isArray(originalArray[0]) ? originalArray[0].length : 1;\n\n originalArray.forEach(a => {\n // if it's not an array, it's a string\n const length = Array.isArray(a) ? a.length : 1;\n if (length > longestArrayItem) {\n longestArrayItem = length;\n }\n });\n\n const newArray = new Array(longestArrayItem);\n\n for (let outerIndex = 0; outerIndex < originalArray.length; outerIndex++) {\n if (!Array.isArray(originalArray[outerIndex])) {\n originalArray[outerIndex] = [originalArray[outerIndex]];\n }\n\n for (let innerIndex = 0; innerIndex < longestArrayItem; innerIndex++) {\n // ensure we have an array to push to\n if (!Array.isArray(newArray[innerIndex])) {\n newArray[innerIndex] = [];\n }\n\n const value =\n typeof originalArray[outerIndex][innerIndex] !== 'undefined'\n ? originalArray[outerIndex][innerIndex]\n : null;\n newArray[innerIndex].push(value);\n }\n }\n\n return newArray;\n}\n\nconst specialTableCase = (traceType, srcAttributePath) => {\n /* Just more user friendly\n * Table traces have many configuration options,\n * The below attributes can be 2d or 1d and will affect the plot differently\n * EX:\n * header.values = ['Jan', 'Feb', 'Mar'] => will put data in a row\n * header.values = [['Jan', 1], ['Feb', 2], ['Mar', 3]] => will create 3 columns\n * 1d arrays affect columns\n * 2d arrays affect rows within each column\n */\n return (\n traceType === 'table' &&\n [\n 'header.valuessrc',\n 'header.font.colorsrc',\n 'header.font.sizesrc',\n 'header.fill.colorsrc',\n 'columnwidthsrc',\n ].some(a => srcAttributePath.endsWith(a))\n );\n};\n\nfunction maybeTransposeData(data, srcAttributePath, traceType) {\n if (!data || (Array.isArray(data) && data.length === 0)) {\n return null;\n }\n\n const isTransposable2DArray =\n srcAttributePath.endsWith('zsrc') &&\n ['contour', 'contourgl', 'heatmap', 'heatmapgl', 'surface', 'carpet', 'contourcarpet'].includes(\n traceType\n );\n\n if (isTransposable2DArray) {\n return transpose(data);\n }\n\n if (\n specialTableCase(traceType, srcAttributePath) &&\n Array.isArray(data[0]) &&\n data.length === 1\n ) {\n return data[0];\n }\n\n return data;\n}\n\nfunction maybeAdjustSrc(src, srcAttributePath, traceType, config) {\n if (!src || (Array.isArray(src) && src.length === 0)) {\n return null;\n }\n\n if (specialTableCase(traceType, srcAttributePath) && src.length === 1) {\n return src[0];\n }\n\n return config && config.fromSrc ? config.fromSrc(src, traceType) : src;\n}\n\nfunction adjustColorscale(colorscale, numberOfNeededColors, colorscaleType, config) {\n if (config && config.repeat) {\n if (numberOfNeededColors < colorscale.length) {\n return colorscale.slice(0, numberOfNeededColors);\n }\n\n const repetitions = Math.ceil(numberOfNeededColors / colorscale.length);\n const newArray = new Array(repetitions).fill(colorscale);\n return newArray\n .reduce((a, b) => {\n return a.concat(b);\n }, [])\n .slice(0, numberOfNeededColors);\n }\n\n return getColorscale(colorscale, numberOfNeededColors, null, null, colorscaleType);\n}\n\nfunction getFullTrace(props, context) {\n let fullTrace = {};\n if (context.fullData && context.data) {\n if (props.fullDataArrayPosition) {\n // fullDataArrayPosition will be supplied in panels that have the canGroup prop\n fullTrace = context.fullData[props.fullDataArrayPosition[0]];\n } else {\n // for all other panels, we'll find fullTrace with the data index\n fullTrace = context.fullData.filter(t => t && props.traceIndexes[0] === t.index)[0];\n }\n\n // For transformed traces, we actually want to read in _fullInput because\n // there's original parent information that's more useful to the user there\n // This is true except for fit transforms, where reading in fullData is\n // what we want\n if (\n fullTrace.transforms &&\n !fullTrace.transforms.some(t => ['moving-average', 'fits'].includes(t.type)) &&\n !props.fullDataArrayPosition\n ) {\n fullTrace = fullTrace._fullInput;\n }\n }\n return fullTrace;\n}\n\nexport {\n adjustColorscale,\n axisIdToAxisName,\n bem,\n capitalize,\n lowerCase,\n upperCase,\n removeNonWord,\n camelCase,\n pascalCase,\n clamp,\n connectCartesianSubplotToLayout,\n connectNonCartesianSubplotToLayout,\n connectAnnotationToLayout,\n connectShapeToLayout,\n connectSliderToLayout,\n connectUpdateMenuToLayout,\n connectImageToLayout,\n connectAxesToLayout,\n connectLayoutToPlot,\n connectToContainer,\n connectRangeSelectorToAxis,\n connectTransformToTrace,\n connectAggregationToTransform,\n connectTraceToPlot,\n containerConnectedContextTypes,\n computeTraceOptionsFromSchema,\n traceTypeToPlotlyInitFigure,\n dereference,\n getAllAxes,\n getAxisTitle,\n getSubplotTitle,\n getDisplayName,\n isPlainObject,\n localize,\n localizeString,\n maybeAdjustSrc,\n maybeTransposeData,\n plotlyTraceToCustomTrace,\n renderTraceIcon,\n unpackPlotProps,\n walkObject,\n tooLight,\n striptags,\n traceTypeToAxisType,\n transpose,\n getFullTrace,\n EDITOR_ACTIONS,\n};\n"]} \ No newline at end of file diff --git a/src/EditorControls.js b/src/EditorControls.js index 91d937e55..e9292a953 100644 --- a/src/EditorControls.js +++ b/src/EditorControls.js @@ -32,6 +32,13 @@ class EditorControls extends Component { } } + componentWillReceiveProps(nextProps) { + const {updatePayload} = nextProps; + if (updatePayload && updatePayload.length > 0) { + this.handleDataSourceChange(updatePayload); + } + } + getChildContext() { const gd = this.props.graphDiv || {}; return { @@ -94,6 +101,17 @@ class EditorControls extends Component { }; } + handleDataSourceChange(updatePayload) { + if (updatePayload && updatePayload.length !== 0) { + updatePayload.forEach(payload => { + this.handleUpdate({ + type: EDITOR_ACTIONS.UPDATE_TRACES, + payload, + }); + }); + } + } + handleUpdate({type, payload}) { const {graphDiv} = this.props; @@ -394,6 +412,7 @@ EditorControls.propTypes = { chartHelp: PropTypes.object, optionalPanel: PropTypes.node, menuPanelOrder: PropTypes.array, + updatePayload: PropTypes.array, }; EditorControls.defaultProps = { diff --git a/src/PlotlyEditor.js b/src/PlotlyEditor.js index 99bcaf253..cef744fdf 100644 --- a/src/PlotlyEditor.js +++ b/src/PlotlyEditor.js @@ -42,6 +42,7 @@ class PlotlyEditor extends Component { chartHelp={this.props.chartHelp} optionalPanel={this.props.optionalPanel} menuPanelOrder={this.props.menuPanelOrder} + updatePayload={this.props.updatePayload} > {this.props.children} @@ -95,6 +96,7 @@ PlotlyEditor.propTypes = { chartHelp: PropTypes.object, optionalPanel: PropTypes.any, menuPanelOrder: PropTypes.array, + updatePayload: PropTypes.array, }; PlotlyEditor.defaultProps = { diff --git a/src/components/containers/PlotlyPanel.js b/src/components/containers/PlotlyPanel.js index 7a22588db..d6441fd10 100644 --- a/src/components/containers/PlotlyPanel.js +++ b/src/components/containers/PlotlyPanel.js @@ -5,7 +5,7 @@ import React, {Component, cloneElement} from 'react'; import update from 'immutability-helper'; import {bem} from 'lib'; import {EmbedIconIcon} from 'plotly-icons'; -import {PlotlyPanelContext} from '../../context'; +import {EditorControlsContext, PlotlyPanelContext} from '../../context'; class PanelErrorImpl extends Component { render() { @@ -19,9 +19,7 @@ class PanelErrorImpl extends Component { } } -PanelErrorImpl.contextTypes = { - localize: PropTypes.func, -}; +PanelErrorImpl.contextType = EditorControlsContext; const PanelError = PanelErrorImpl; diff --git a/src/lib/index.js b/src/lib/index.js index d26665ddf..ff414f6a9 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -30,6 +30,7 @@ import * as PlotlyIcons from 'plotly-icons'; import striptags from './striptags'; import {capitalize, lowerCase, upperCase, removeNonWord, camelCase, pascalCase} from './strings'; import {getColorscale} from 'react-colorscales'; +import {EDITOR_ACTIONS} from './constants'; const TOO_LIGHT_FACTOR = 0.8; @@ -249,4 +250,5 @@ export { traceTypeToAxisType, transpose, getFullTrace, + EDITOR_ACTIONS, };