UNPKG

@eeacms/react-chart-editor

Version:

plotly.js chart editor react component UI

2 lines 7.68 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Field=_interopRequireDefault(require("./Field"));var _propTypes=_interopRequireDefault(require("prop-types"));var _react=_interopRequireWildcard(require("react"));var _lib=require("../../lib");var _reactResizableRotatableDraggable=_interopRequireDefault(require("react-resizable-rotatable-draggable"));var _RadioBlocks=_interopRequireDefault(require("../widgets/RadioBlocks"));var _DualNumeric=_interopRequireDefault(require("./DualNumeric"));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 maxWidth=276;const gridRes=8;class UnconnectedRectanglePositioner extends _react.Component{constructor(props,context){super(props,context);this.sendUpdate=this.sendUpdate.bind(this);this.attr=this.props.cartesian?{x:["xaxis.domain[0]","xaxis.domain[1]"],y:["yaxis.domain[0]","yaxis.domain[1]"]}:{x:["domain.x[0]","domain.x[1]"],y:["domain.y[0]","domain.y[1]"]};this.state={snap:true}}sendUpdate(_ref){let{x,y,width,height,fieldWidthPx,fieldHeightPx}=_ref;const x0=x/fieldWidthPx;const x1=(width+x)/fieldWidthPx;const y0=(fieldHeightPx-(height+y))/fieldHeightPx;const y1=(fieldHeightPx-y)/fieldHeightPx;const snap=this.state.snap?v=>Math.round(v*gridRes)/gridRes:v=>v;const payload={};if(x0>=0&&x1<=1){payload[this.attr.x[0]]=snap(x0);payload[this.attr.x[1]]=snap(x1)}if(y0>=0&&y1<=1){payload[this.attr.y[0]]=snap(y0);payload[this.attr.y[1]]=snap(y1)}this.context.updateContainer(payload)}render(){const{attr,cartesian}=this.props;const{localize:_,fullContainer,fullLayout:{width:plotWidthPx,height:plotHeightPx}}=this.context;const x=cartesian?fullContainer.xaxis.domain:fullContainer.domain.x;const y=cartesian?fullContainer.yaxis.domain:fullContainer.domain.y;const aspectRatio=plotHeightPx/plotWidthPx;const fieldWidthPx=Math.min(maxWidth,maxWidth/aspectRatio);const fieldHeightPx=Math.min(maxWidth,maxWidth*aspectRatio);const width=fieldWidthPx*(x[1]-x[0]);const height=fieldHeightPx*(y[1]-y[0]);const left=fieldWidthPx*x[0];const top=fieldHeightPx*(1-y[1]);let zoomable="";if(!fullContainer.xaxis||!fullContainer.yaxis||!fullContainer.xaxis.overlaying&&!fullContainer.yaxis.overlaying){zoomable="n, w, s, e, nw, ne, se, sw"}else if(!fullContainer.xaxis.overlaying){zoomable="e, w"}else if(!fullContainer.yaxis.overlaying){zoomable="n, s"}return _react.default.createElement("div",{style:{marginRight:25,boxSizing:"content-box"}},_react.default.createElement(_Field.default,_extends({},this.props,{attr:attr}),_react.default.createElement(_Field.default,{label:_("Snap to Grid")},_react.default.createElement(_RadioBlocks.default,{alignment:"center",onOptionChange:snap=>this.setState({snap:snap}),activeOption:this.state.snap,options:[{label:_("On"),value:true},{label:_("Off"),value:false}]})),_react.default.createElement("div",{className:"rect-container",style:{width:fieldWidthPx+1,height:fieldHeightPx+1}},Array(gridRes*gridRes).fill(0).map((v,i)=>_react.default.createElement("div",{key:i,className:"rect-grid",style:{width:fieldWidthPx/gridRes-1,height:fieldHeightPx/gridRes-1,borderBottom:i<gridRes*(gridRes-1)?"0":"1px solid ",borderRight:(i+1)%gridRes?"0":"1px solid"}})),_react.default.createElement(_reactResizableRotatableDraggable.default,{bounds:"parent",width:width,height:height,left:left,top:top,rotatable:false,draggable:!this.state.snap,zoomable:zoomable,onResize:style=>{this.sendUpdate({fieldWidthPx,fieldHeightPx,width:style.width,height:style.height,x:style.left,y:style.top})},onDrag:(deltaX,deltaY)=>{this.sendUpdate({fieldWidthPx,fieldHeightPx,width,height,x:left+deltaX,y:top+deltaY})}})),fullContainer.xaxis&&fullContainer.xaxis.overlaying?"":_react.default.createElement(_DualNumeric.default,{label:_("X"),attr:this.attr.x[0],attr2:this.attr.x[1],percentage:true,step:1,min:0,max:100}),fullContainer.yaxis&&fullContainer.yaxis.overlaying?"":_react.default.createElement(_DualNumeric.default,{label:_("Y"),attr:this.attr.y[0],attr2:this.attr.y[1],percentage:true,step:1,min:0,max:100})))}__reactstandin__regenerateByEval(key,code){this[key]=eval(code)}}UnconnectedRectanglePositioner.propTypes=_objectSpread({fullValue:_propTypes.default.any,updatePlot:_propTypes.default.func,cartesian:_propTypes.default.bool},_Field.default.propTypes);UnconnectedRectanglePositioner.contextTypes={localize:_propTypes.default.func,updateContainer:_propTypes.default.func,fullContainer:_propTypes.default.object,fullLayout:_propTypes.default.object};UnconnectedRectanglePositioner.displayName="UnconnectedRectanglePositioner";const _default=(0,_lib.connectToContainer)(UnconnectedRectanglePositioner);var _default2=exports.default=_default;;(function(){var reactHotLoader=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.default:undefined;if(!reactHotLoader){return}reactHotLoader.register(maxWidth,"maxWidth","/react-chart-editor/src/components/fields/RectanglePositioner.js");reactHotLoader.register(gridRes,"gridRes","/react-chart-editor/src/components/fields/RectanglePositioner.js");reactHotLoader.register(UnconnectedRectanglePositioner,"UnconnectedRectanglePositioner","/react-chart-editor/src/components/fields/RectanglePositioner.js");reactHotLoader.register(_default,"default","/react-chart-editor/src/components/fields/RectanglePositioner.js")})();;(function(){var leaveModule=typeof reactHotLoaderGlobal!=="undefined"?reactHotLoaderGlobal.leaveModule:undefined;leaveModule&&leaveModule(module)})(); //# sourceMappingURL=RectanglePositioner.js.map