UNPKG

@eeacms/react-chart-editor

Version:

plotly.js chart editor react component UI

2 lines 8.15 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Dropdown=_interopRequireDefault(require("./Dropdown"));var _Info=_interopRequireDefault(require("./Info"));var _propTypes=_interopRequireDefault(require("prop-types"));var _react=_interopRequireWildcard(require("react"));var _constants=require("../../lib/constants");var _Button=_interopRequireDefault(require("../widgets/Button"));var _plotlyIcons=require("plotly-icons");var _cloneDeep=_interopRequireDefault(require("lodash/cloneDeep"));var _lib=require("../../lib");var _2=require("./..");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(i.get||i.set)?o(f,t,i):f[t]=e[t]);return f})(e,t)}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}(function(){var enterModule=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.enterModule:undefined;enterModule&&enterModule(module)})();function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==typeof i?i:i+""}function _toPrimitive(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}var __signature__=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.default.signature:function(a){return a};class UnconnectedAxisCreator extends _react.Component{canAddAxis(){const currentAxisId=this.props.fullContainer[this.props.attr];const currentTraceIndex=this.props.fullContainer.index;return this.context.fullData.some(d=>d.index!==currentTraceIndex&&d[this.props.attr]===currentAxisId)}addAndUpdateAxis(){const{attr,updateContainer}=this.props;const{onUpdate,fullLayout:{_subplots:subplots}}=this.context;const lastAxisNumber=Number(subplots[attr][subplots[attr].length-1].charAt(1))||1;updateContainer({[attr]:attr.charAt(0)+(lastAxisNumber+1)});let side=null;if(attr==="yaxis"){side="right"}else if(attr==="xaxis"){side="top"}onUpdate({type:_constants.EDITOR_ACTIONS.UPDATE_LAYOUT,payload:{update:_objectSpread(_objectSpread({},Object.keys(_objectSpread({},this.context.defaults.axis||{})).reduce((acc,key)=>{acc["".concat(attr+(lastAxisNumber+1),".").concat(key)]=(0,_cloneDeep.default)(this.context.defaults.axis[key]);return acc},{})),{},{["".concat(attr+(lastAxisNumber+1),".showgrid")]:false,["".concat(attr+(lastAxisNumber+1),".showticklabels")]:false,["".concat(attr+(lastAxisNumber+1),".zeroline")]:false,["".concat(attr+(lastAxisNumber+1),".side")]:side,["".concat(attr+(lastAxisNumber+1),".overlaying")]:!(attr==="yaxis"||attr==="xaxis")?null:subplots[attr][subplots[attr].length-1]})}})}updateAxis(update){const currentAxisId=this.props.fullContainer[this.props.attr];const axesToBeGarbageCollected=[];if(currentAxisId!==update&&!this.context.fullData.some(trace=>trace[this.props.attr]===currentAxisId&&trace.index!==this.props.fullContainer.index)){axesToBeGarbageCollected.push(currentAxisId)}this.context.onUpdate({type:_constants.EDITOR_ACTIONS.UPDATE_TRACES,payload:{axesToBeGarbageCollected,update:{[this.props.attr]:update},traceIndexes:[this.props.fullContainer.index]}})}render(){const icon=_react.default.createElement(_plotlyIcons.PlusIcon,null);const extraComponent=this.canAddAxis()?_react.default.createElement(_Button.default,{variant:"no-text",icon:icon,onClick:()=>this.addAndUpdateAxis()}):_react.default.createElement(_Button.default,{variant:"no-text--disabled",icon:icon,onClick:()=>{}});return _react.default.createElement(_Dropdown.default,{label:this.props.label,attr:this.props.attr,clearable:false,options:this.props.options,updatePlot:u=>this.updateAxis(u),extraComponent:extraComponent})}__reactstandin__regenerateByEval(key,code){this[key]=eval(code)}}UnconnectedAxisCreator.propTypes={attr:_propTypes.default.string,label:_propTypes.default.string,options:_propTypes.default.array,container:_propTypes.default.object,fullContainer:_propTypes.default.object,updateContainer:_propTypes.default.func};UnconnectedAxisCreator.contextTypes={fullLayout:_propTypes.default.object,defaults:_propTypes.default.object,data:_propTypes.default.array,fullData:_propTypes.default.array,onUpdate:_propTypes.default.func};const AxisCreator=(0,_lib.connectToContainer)(UnconnectedAxisCreator);class UnconnectedAxesCreator extends _react.Component{render(){const axisType=(0,_lib.traceTypeToAxisType)(this.props.container.type);const isFirstTraceOfAxisType=this.context.data.filter(d=>(0,_lib.traceTypeToAxisType)(d.type)===axisType).length===1;if(isFirstTraceOfAxisType){return null}const{fullLayout,localize:_}=this.context;const controls=[];function getOptions(axisType){return fullLayout._subplots[axisType].map(axisId=>({label:(0,_lib.getParsedTemplateString)((0,_lib.getAxisTitle)(fullLayout[(0,_lib.axisIdToAxisName)(axisId)]),{meta:fullLayout.meta}),value:axisId}))}if(axisType==="cartesian"){["xaxis","yaxis"].forEach((type,index)=>{controls.push(_react.default.createElement(AxisCreator,{key:index,attr:type,label:type.charAt(0).toUpperCase()+_(" Axis"),options:getOptions(type)}))})}return _react.default.createElement(_2.PlotlySection,{name:_("Axes to Use")},controls,_react.default.createElement(_Info.default,null,_("You can style and position your axes in the "),_react.default.createElement("a",{onClick:()=>this.context.setPanel("Structure","Subplots")},_("Subplots")),_(" panel.")))}__reactstandin__regenerateByEval(key,code){this[key]=eval(code)}}UnconnectedAxesCreator.propTypes={container:_propTypes.default.object,fullContainer:_propTypes.default.object};UnconnectedAxesCreator.contextTypes={data:_propTypes.default.array,fullData:_propTypes.default.array,fullLayout:_propTypes.default.object,localize:_propTypes.default.func,setPanel:_propTypes.default.func};const _default=(0,_lib.connectToContainer)(UnconnectedAxesCreator,{modifyPlotProps:(props,context,plotProps)=>{const{data}=context;const{fullContainer}=plotProps;plotProps.isVisible=data.length>1&&data[fullContainer.index]&&(0,_lib.traceTypeToAxisType)(data[fullContainer.index].type)==="cartesian"}});var _default2=exports.default=_default;;(function(){var reactHotLoader=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.default:undefined;if(!reactHotLoader){return}reactHotLoader.register(UnconnectedAxisCreator,"UnconnectedAxisCreator","/react-chart-editor/src/components/fields/AxesCreator.js");reactHotLoader.register(AxisCreator,"AxisCreator","/react-chart-editor/src/components/fields/AxesCreator.js");reactHotLoader.register(UnconnectedAxesCreator,"UnconnectedAxesCreator","/react-chart-editor/src/components/fields/AxesCreator.js");reactHotLoader.register(_default,"default","/react-chart-editor/src/components/fields/AxesCreator.js")})();;(function(){var leaveModule=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.leaveModule:undefined;leaveModule&&leaveModule(module)})(); //# sourceMappingURL=AxesCreator.js.map