!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react"),require("prop-types"),require("react-dom")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","react-dom"],e):e((t=t||self).ReactFlow={},t.React,t.PropTypes,t.ReactDOM)}(this,function(t,O,e,n){"use strict";var r,N="default"in O?O.default:O;e=e&&e.hasOwnProperty("default")?e.default:e,n=n&&n.hasOwnProperty("default")?n.default:n;var l="undefined"!=typeof Symbol?Symbol("immer-nothing"):((r={})["immer-nothing"]=!0,r),o="undefined"!=typeof Symbol&&Symbol.for?Symbol.for("immer-draftable"):"__$immer_draftable",d="undefined"!=typeof Symbol&&Symbol.for?Symbol.for("immer-state"):"__$immer_state";function h(t){return!!t&&!!t[d]}function p(t){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t))return!0;var e=Object.getPrototypeOf(t);return!e||e===Object.prototype||(!!t[o]||!!t.constructor[o])}var i=Object.assign||function(t,e){for(var n in e)c(e,n)&&(t[n]=e[n]);return t},a="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames;function y(r,o){if(void 0===o&&(o=!1),Array.isArray(r))return r.slice();var i=Object.create(Object.getPrototypeOf(r));return a(r).forEach(function(t){if(t!==d){var e=Object.getOwnPropertyDescriptor(r,t),n=e.value;e.get&&o&&(n=e.get.call(r)),e.enumerable?i[t]=n:o&&Object.defineProperty(i,t,{value:n,writable:!0,configurable:!0})}}),i}function m(e,n){if(Array.isArray(e))for(var t=0;tc&&function(t){var e,n,r=t.length,o=t[r-1];for(o.cacheItem.delete(o.arg),n=r-2;0<=n&&(o=t[n],!(e=o.cacheItem.get(o.arg))||!e.size);n--)o.cacheItem.delete(o.arg)}(f.shift())),s.wasMemoized=a,s.numArgs=1+o,e};return s.limit=c,s.wasMemoized=!1,s.cache=l,s.lru=f,s}};var ft=O.createContext(),dt="undefined"!=typeof window?O.useLayoutEffect:O.useEffect;var ht,pt=(ht=ft,function(t){var n=O.useContext(ht),r=O.useRef(t),o=O.useRef(),i=O.useRef(!0),a=O.useRef(),u=O.useReducer(function(t){return t+1},0)[1];if(a.current||r.current!==t||void 0===o.current)try{o.current=t(n.getState())}catch(t){var e="An error occurred trying to map state in a useStoreState hook: "+t.message+".";throw a.current&&(e+="\nThis error may be related to the following error:\n"+a.current.stack+"\n\nOriginal stack trace:"),new Error(e)}return dt(function(){r.current=t,a.current=void 0}),dt(function(){function t(){try{var t=r.current(n.getState());if(t===o.current)return;o.current=t}catch(t){a.current=t}i.current&&u({})}var e=n.subscribe(t);return t(),function(){i.current=!1,e()}},[]),o.current});var yt,mt=(yt=ft,function(t){return t(O.useContext(yt).getActions())});function gt(){return(gt=Object.assign||function(t){for(var e=1;e>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?new tn(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?new tn(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Ve.exec(t))?new tn(e[1],e[2],e[3],1):(e=Be.exec(t))?new tn(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=qe.exec(t))?Je(e[1],e[2],e[3],e[4]):(e=He.exec(t))?Je(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Ue.exec(t))?on(e[1],e[2]/100,e[3]/100,1):(e=Fe.exec(t))?on(e[1],e[2]/100,e[3]/100,e[4]):Ge.hasOwnProperty(t)?Ze(Ge[t]):"transparent"===t?new tn(NaN,NaN,NaN,0):null}function Ze(t){return new tn(t>>16&255,t>>8&255,255&t,1)}function Je(t,e,n,r){return r<=0&&(t=e=n=NaN),new tn(t,e,n,r)}function Qe(t,e,n,r){return 1===arguments.length?function(t){return t instanceof ze||(t=$e(t)),t?new tn((t=t.rgb()).r,t.g,t.b,t.opacity):new tn}(t):new tn(t,e,n,null==r?1:r)}function tn(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function en(){return"#"+rn(this.r)+rn(this.g)+rn(this.b)}function nn(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function rn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function on(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||1<=n?t=e=NaN:e<=0&&(t=NaN),new un(t,e,n,r)}function an(t){if(t instanceof un)return new un(t.h,t.s,t.l,t.opacity);if(t instanceof ze||(t=$e(t)),!t)return new un;if(t instanceof un)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,o=Math.min(e,n,r),i=Math.max(e,n,r),a=NaN,u=i-o,s=(i+o)/2;return u?(a=e===i?(n-r)/u+6*(nn._time&&(r=n._time),(t=n)._next):(e=n._next,n._next=null,t?t._next=e:Cn=e);Dn=t,Kn(r)}(),Xn=0}}function Wn(){var t=Vn.now(),e=t-Ln;RnQn)throw new Error("too late; already scheduled");return n}function sr(t,e){var n=cr(t,e);if(n.state>nr)throw new Error("too late; already running");return n}function cr(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function lr(t,e){var n,r,o,i=t.__transition,a=!0;if(i){for(o in e=null==e?null:e+"",i)(n=i[o]).name===e?(r=n.state>er&&n.statei&&(o=r.slice(i,o),u[a]?u[a]+=o:u[++a]=o),(e=e[0])===(n=n[0])?u[a]?u[a]+=n:u[++a]=n:(u[++a]=null,s.push({i:a,x:hn(e,n)})),i=yn.lastIndex;return it.maxX&&(t.maxX=r),n.yt.maxY&&(t.maxY=o),t},{minX:Number.MAX_VALUE,minY:Number.MAX_VALUE,maxX:0,maxY:0});return{x:e.minX,y:e.minY,width:e.maxX-e.minX,height:e.maxY-e.minY}},Br=function(t,h,e,n){var p=2e&&a.x+cn&&a.y+l1?e-1:0),r=1;r: Unmounted during event!");return e}var K={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}},$=K.mouse,Z=function(t){function i(){var t,e,f;A(this,i);for(var n=arguments.length,r=Array(n),o=0;o not mounted on DragStart!");var n=e.ownerDocument;if(!(f.props.disabled||!(t.target instanceof n.defaultView.Node)||f.props.handle&&!L(t.target,f.props.handle,e)||f.props.cancel&&L(t.target,f.props.cancel,e))){var r=function(t){if(t.targetTouches&&t.targetTouches[0])return t.targetTouches[0].identifier;if(t.changedTouches&&t.changedTouches[0])return t.changedTouches[0].identifier}(t);f.setState({touchIdentifier:r});var o=U(t,r,f);if(null!=o){var i=o.x,a=o.y,u=F(f,i,a);f.props.onStart;var s=f.props.onStart(t,u);!1!==s&&(f.props.enableUserSelectHack&&B(n),f.setState({dragging:!0,lastX:i,lastY:a}),X(n,$.move,f.handleDrag),X(n,$.stop,f.handleDragStop))}}},f.handleDrag=function(t){"touchmove"===t.type&&t.preventDefault();var e=U(t,f.state.touchIdentifier,f);if(null!=e){var n=e.x,r=e.y;if(Array.isArray(f.props.grid)){var o=n-f.state.lastX,i=r-f.state.lastY,a=function(t,e,n){var r=Math.round(e/t[0])*t[0],o=Math.round(n/t[1])*t[1];return[r,o]}(f.props.grid,o,i),u=I(a,2);if(o=u[0],i=u[1],!o&&!i)return;n=f.state.lastX+o,r=f.state.lastY+i}var s=F(f,n,r),c=f.props.onDrag(t,s);if(!1!==c)f.setState({lastX:n,lastY:r});else try{f.handleDragStop(new MouseEvent("mouseup"))}catch(t){var l=document.createEvent("MouseEvents");l.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),f.handleDragStop(l)}}},f.handleDragStop=function(t){if(f.state.dragging){var e=U(t,f.state.touchIdentifier,f);if(null!=e){var n=e.x,r=e.y,o=F(f,n,r),i=c.findDOMNode(f);i&&f.props.enableUserSelectHack&&q(i.ownerDocument),f.setState({dragging:!1,lastX:NaN,lastY:NaN}),f.props.onStop(t,o),i&&(Y(i.ownerDocument,$.move,f.handleDrag),Y(i.ownerDocument,$.stop,f.handleDragStop))}}},f.onMouseDown=function(t){return $=K.mouse,f.handleDragStart(t)},f.onMouseUp=function(t){return $=K.mouse,f.handleDragStop(t)},f.onTouchStart=function(t){return $=K.touch,f.handleDragStart(t)},f.onTouchEnd=function(t){return $=K.touch,f.handleDragStop(t)},M(f,e)}return D(i,t),T(i,[{key:"componentWillUnmount",value:function(){var t=c.findDOMNode(this);if(t){var e=t.ownerDocument;Y(e,K.mouse.move,this.handleDrag),Y(e,K.touch.move,this.handleDrag),Y(e,K.mouse.stop,this.handleDragStop),Y(e,K.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&q(e)}}},{key:"render",value:function(){return h.cloneElement(h.Children.only(this.props.children),{style:function(){var t=0, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),f}return D(e,t),T(e,[{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&c.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillReceiveProps",value:function(t){!t.position||this.props.position&&t.position.x===this.props.position.x&&t.position.y===this.props.position.y||this.setState({x:t.position.x,y:t.position.y})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var t,e={},n=null,r=Boolean(this.props.position),o=!r||this.state.dragging,i=this.props.position||this.props.defaultPosition,a={x:function(t){return"both"===t.props.axis||"x"===t.props.axis}(this)&&o?this.state.x:i.x,y:function(t){return"both"===t.props.axis||"y"===t.props.axis}(this)&&o?this.state.y:i.y};this.state.isElementSVG?n=function(t,e){return V(t,e,"")}(a,this.props.positionOffset):e=function(t,e){var n=V(t,e,"px");return j({},k("transform",P),n)}(a,this.props.positionOffset);var u=this.props,s=u.defaultClassName,c=u.defaultClassNameDragging,l=u.defaultClassNameDragged,f=h.Children.only(this.props.children),d=x(f.props.className||"",s,(j(t={},c,this.state.dragging),j(t,l,this.state.dragged),t));return h.createElement(Z,C({},this.props,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),h.cloneElement(f,{className:d,style:C({},f.props.style,e),transform:n}))}}]),e}(h.Component);return J.displayName="Draggable",J.propTypes=C({},Z.propTypes,{axis:i.oneOf(["both","x","y","none"]),bounds:i.oneOfType([i.shape({left:i.number,right:i.number,top:i.number,bottom:i.number}),i.string,i.oneOf([!1])]),defaultClassName:i.string,defaultClassNameDragging:i.string,defaultClassNameDragged:i.string,defaultPosition:i.shape({x:i.number,y:i.number}),positionOffset:i.shape({x:i.oneOfType([i.number,i.string]),y:i.oneOfType([i.number,i.string])}),position:i.shape({x:i.number,y:i.number}),className:O,style:O,transform:O}),J.defaultProps=C({},Z.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}),(J.default=J).DraggableCore=Z,J}(n,N)});function oo(t){return t&&t.target&&["INPUT","SELECT","TEXTAREA"].includes(t.target.nodeName)}function io(t){var e=0