@eeacms/react-chart-editor
Version:
plotly.js chart editor react component UI
2 lines • 8.15 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _ColorPicker=_interopRequireDefault(require("./ColorPicker"));var _ColorscalePicker=require("./ColorscalePicker");var _Field=_interopRequireDefault(require("./Field"));var _Info=_interopRequireDefault(require("./Info"));var _propTypes=_interopRequireDefault(require("prop-types"));var _RadioBlocks=_interopRequireDefault(require("../widgets/RadioBlocks"));var _react=_interopRequireWildcard(require("react"));var _nested_property=_interopRequireDefault(require("plotly.js/src/lib/nested_property"));var _lib=require("../../lib");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)}function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},_extends.apply(null,arguments)}var __signature__=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.default.signature:function(a){return a};const CustomColorscalePicker=(0,_lib.connectToContainer)(_ColorscalePicker.UnconnectedColorscalePicker,{modifyPlotProps:(props,context,plotProps)=>{if(props.attr==="marker.color"&&context.fullData.filter(t=>context.traceIndexes.includes(t.index)).every(t=>t.marker&&t.marker.color)&&plotProps.fullValue&&typeof plotProps.fullValue==="string"){plotProps.fullValue=context.fullData&&context.fullData.filter(t=>context.traceIndexes.includes(t.index)).map(t=>[0,t.marker.color])}}});class UnconnectedMultiColorPicker extends _react.Component{constructor(props,context){super(props,context);this.state={selectedConstantColorOption:context.traceIndexes.length>1&&props.fullValue&&props.fullValue.every(v=>v[1]===props.fullValue[0][1])?"single":"multiple"};this.setColor=this.setColor.bind(this);this.setColors=this.setColors.bind(this)}setColor(color){if(this.props.setColor){this.props.setColor(color)}else{this.props.updatePlot(color)}}setColors(colorscale,colorscaleType){const numberOfTraces=this.props.tracesToColor.length;const colors=colorscale.map(c=>c[1]);let adjustedColors=colors;if(colorscaleType!=="categorical"){adjustedColors=(0,_lib.adjustColorscale)(colors,numberOfTraces,colorscaleType)}if(adjustedColors.every(c=>c===adjustedColors[0])||colorscaleType==="categorical"){adjustedColors=(0,_lib.adjustColorscale)(colors,numberOfTraces,colorscaleType,{repeat:true})}const updates=adjustedColors.map(color=>({[this.props.attr]:color}));this.context.updateContainer(updates)}render(){const _=this.context.localize;const constantOptions=[{label:_("Single"),value:"single"},{label:_("Multiple"),value:"multiple"}];const selectedConstantColorOption=this.props.parentSelectedConstantColorOption?this.props.parentSelectedConstantColorOption:this.state.selectedConstantColorOption;const multiMessage=this.props.multiColorMessage?this.props.multiColorMessage:_("Each will be colored according to the selected colors.");const singleMessage=this.props.singleColorMessage?this.props.singleColorMessage:_("All will be colored in the same color.");if(this.context.traceIndexes.length>1){return _react.default.createElement(_Field.default,_extends({},this.props,{suppressMultiValuedMessage:true}),_react.default.createElement(_RadioBlocks.default,{options:constantOptions,activeOption:selectedConstantColorOption,onOptionChange:this.props.onConstantColorOptionChange?this.props.onConstantColorOptionChange:value=>this.setState({selectedConstantColorOption:value})}),_react.default.createElement(_Info.default,null,selectedConstantColorOption==="single"?singleMessage:multiMessage),selectedConstantColorOption==="single"?_react.default.createElement(_ColorPicker.default,{attr:this.props.attr,updatePlot:this.setColor}):_react.default.createElement(CustomColorscalePicker,{suppressMultiValuedMessage:true,attr:this.props.attr,updatePlot:this.setColors,fullValue:this.props.fullValue,initialCategory:"categorical",editable:true}))}return _react.default.createElement(_ColorPicker.default,{attr:this.props.attr,updatePlot:this.setColor,label:this.props.label})}__reactstandin__regenerateByEval(key,code){this[key]=eval(code)}}UnconnectedMultiColorPicker.propTypes=_objectSpread({multiColorMessage:_propTypes.default.string,singleColorMessage:_propTypes.default.string,updatePlot:_propTypes.default.func,attr:_propTypes.default.string,parentSelectedConstantColorOption:_propTypes.default.string,onConstantColorOptionChange:_propTypes.default.func,messageKeyWordSingle:_propTypes.default.string,messageKeyWordPlural:_propTypes.default.string,tracesToColor:_propTypes.default.array},_Field.default.propTypes);UnconnectedMultiColorPicker.contextTypes={localize:_propTypes.default.func,updateContainer:_propTypes.default.func,traceIndexes:_propTypes.default.array,fullData:_propTypes.default.array};UnconnectedMultiColorPicker.displayName="UnconnectedMultiColorPicker";const _default=(0,_lib.connectToContainer)(UnconnectedMultiColorPicker,{modifyPlotProps(props,context,plotProps){if(plotProps.isVisible){const colors=[];let tracesToColor=[];const dedupedTraceIndexes=[];context.traceIndexes.forEach(i=>{if(!dedupedTraceIndexes.includes(i)){dedupedTraceIndexes.push(i)}});dedupedTraceIndexes.forEach(traceIndex=>{const traces=context.fullData.filter(trace=>trace.index===traceIndex);tracesToColor=tracesToColor.concat(traces);traces.forEach(t=>{const value=(0,_nested_property.default)(t,props.attr).get();if(value){colors.push(value)}})});plotProps.tracesToColor=tracesToColor;plotProps.fullValue=colors.map(c=>[0,c])}}});var _default2=exports.default=_default;;(function(){var reactHotLoader=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.default:undefined;if(!reactHotLoader){return}reactHotLoader.register(CustomColorscalePicker,"CustomColorscalePicker","/react-chart-editor/src/components/fields/MultiColorPicker.js");reactHotLoader.register(UnconnectedMultiColorPicker,"UnconnectedMultiColorPicker","/react-chart-editor/src/components/fields/MultiColorPicker.js");reactHotLoader.register(_default,"default","/react-chart-editor/src/components/fields/MultiColorPicker.js")})();;(function(){var leaveModule=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.leaveModule:undefined;leaveModule&&leaveModule(module)})();
//# sourceMappingURL=MultiColorPicker.js.map