!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,k="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())),u.wasMemoized=a,u.numArgs=1+o,e};return u.limit=c,u.wasMemoized=!1,u.cache=l,u.lru=f,u}};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(),s=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&&s({})}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 sn(t,e,n,r)}function an(t){if(t instanceof sn)return new sn(t.h,t.s,t.l,t.opacity);if(t instanceof ze||(t=$e(t)),!t)return new sn;if(t instanceof sn)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,s=i-o,u=(i+o)/2;return s?(a=e===i?(n-r)/s+6*(nn._time&&(r=n._time),(t=n)._next):(e=n._next,n._next=null,t?t._next=e:jn=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 ur(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),s[a]?s[a]+=o:s[++a]=o),(e=e[0])===(n=n[0])?s[a]?s[a]+=n:s[++a]=n:(s[++a]=null,u.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,s=F(f,i,a);f.props.onStart;var u=f.props.onStart(t,s);!1!==u&&(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),s=I(a,2);if(o=s[0],i=s[1],!o&&!i)return;n=f.state.lastX+o,r=f.state.lastY+i}var u=F(f,n,r),c=f.props.onDrag(t,u);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 C({},N("transform",P),n)}(a,this.props.positionOffset);var s=this.props,u=s.defaultClassName,c=s.defaultClassNameDragging,l=s.defaultClassNameDragged,f=h.Children.only(this.props.children),d=x(f.props.className||"",u,(C(t={},c,this.state.dragging),C(t,l,this.state.dragged),t));return h.createElement(Z,j({},this.props,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),h.cloneElement(f,{className:d,style:j({},f.props.style,e),transform:n}))}}]),e}(h.Component);return J.displayName="Draggable",J.propTypes=j({},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=j({},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,k)});function oo(t){return t&&t.target&&["INPUT","SELECT","TEXTAREA"].includes(t.target.nodeName)}function io(t){var e=0 * {\n box-shadow: 0 1px 5px 2px rgba(0, 0, 0, 0.08);\n }\n\n.react-flow__node.selected > * {\n box-shadow: 0 0 0 2px #555;\n }\n\n.react-flow__handle {\n position: absolute;\n width: 10px;\n height: 8px;\n background: rgba(255, 255, 255, 0.4);\n cursor: crosshair;\n}\n\n.react-flow__handle.bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 0);\n }\n\n.react-flow__handle.top {\n left: 50%;\n top: 0;\n transform: translate(-50%, 0);\n }\n\n.react-flow__handle.left {\n top: 50%;\n left: 0;\n transform: translate(0, -50%);\n\n }\n\n.react-flow__handle.right {\n right: 0;\n top: 50%;\n transform: translate(0, -50%);\n }\n\n.react-flow__nodesselection {\n z-index: 3;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n transform-origin: left top;\n pointer-events: none;\n}\n\n.react-flow__nodesselection-rect {\n position: absolute;\n background: rgba(0, 89, 220, 0.08);\n border: 1px dotted rgba(0, 89, 220, 0.8);\n pointer-events: all;\n }\n\n.react-flow__controls-button {\n background: #f8f8f8;\n border: 1px solid #eee;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 24px;\n height: 24px;\n cursor: pointer;\n}\n\n.react-flow__controls-button:hover {\n background: #eee;\n}"),"production"!==process.env.NODE_ENV&&require("@welldone-software/why-did-you-render")(k);function ni(t){var e=t.style,n=t.onElementClick,r=t.elements,o=t.children,i=t.nodeTypes,a=t.edgeTypes,s=t.onLoad,u=t.onMove,c=t.onElementsRemove,l=t.onConnect,f=t.onNodeDragStop,d=t.connectionLineType,h=t.connectionLineStyle,p=t.deleteKeyCode,y=t.selectionKeyCode,m=t.gridColor,g=t.showGrid,v=t.gridGap,w=O.useMemo(function(){return function(n){return Dt({},{input:Go(n.input||Ho),default:Go(n.default||qo),output:Go(n.output||Uo)},{},Object.keys(n).filter(function(t){return!["input","default","output"].includes(t)}).reduce(function(t,e){return t[e]=Go(n[e]||qo),t},{}))}(i)},[]),b=O.useMemo(function(){return function(n){return Dt({},{default:Jo(n.default||Qo),straight:Jo(n.bezier||ti)},{},Object.keys(n).filter(function(t){return!["default","bezier"].includes(t)}).reduce(function(t,e){return t[e]=Jo(n[e]||Qo),t},{}))}(a)},[]);return k.createElement("div",{style:e,className:"react-flow"},k.createElement(Tt,{store:Yr},k.createElement(Lo,{onLoad:s,onMove:u,onElementClick:n,onNodeDragStop:f,nodeTypes:w,edgeTypes:b,connectionLineType:d,connectionLineStyle:h,selectionKeyCode:y,onElementsRemove:c,deleteKeyCode:p,elements:r,onConnect:l,gridColor:m,gridGap:v,showGrid:g}),o))}ni.displayName="ReactFlow",ni.propTypes={onElementClick:e.func,onElementsRemove:e.func,onNodeDragStop:e.func,onConnect:e.func,onLoad:e.func,onMove:e.func,nodeTypes:e.object,edgeTypes:e.object,connectionLineType:e.string,connectionLineStyle:e.object,deleteKeyCode:e.number,selectionKeyCode:e.number,gridColor:e.string,gridGap:e.number,showGrid:e.bool},ni.defaultProps={onElementClick:function(){},onElementsRemove:function(){},onNodeDragStop:function(){},onConnect:function(){},onLoad:function(){},onMove:function(){},nodeTypes:{input:Ho,default:qo,output:Uo},edgeTypes:{default:Qo,straight:ti,step:ei},connectionLineType:"bezier",connectionLineStyle:{},deleteKeyCode:8,selectionKeyCode:16,gridColor:"#999",gridGap:24,showGrid:!0};var ri={position:"absolute",zIndex:5,bottom:10,right:10,width:200},oi={position:"absolute",zIndex:5,bottom:10,left:10};t.Controls=function(t){var e=t.style,n=t.className,r=Gr("react-flow__controls",n);return k.createElement("div",{className:r,style:Dt({},oi,{},e)},k.createElement("div",{className:"react-flow__controls-button react-flow__controls-zoomin",onClick:Lr},"+"),k.createElement("div",{className:"react-flow__controls-button react-flow__controls-zoomout",onClick:Xr},"-"),k.createElement("div",{className:"react-flow__controls-button react-flow__controls-fitview",onClick:Rr},"@"))},t.Handle=Bo,t.MiniMap=function(t){var e=t.style,n=void 0===e?{}:e,r=t.className,o=t.bgColor,i=void 0===o?"#f8f8f8":o,a=t.nodeColor,s=void 0===a?"#ddd":a,u=O.useRef(null),c=pt(function(t){return{width:t.width,height:t.height,nodes:t.nodes,transform:t.transform}}),l=Gr("react-flow__minimap",r),f=c.nodes.map(function(t){return t.__rg.position}),d=n.width||ri.width,h=c.height/(c.width||1)*d,p={x:0,y:0,width:c.width,height:c.height},y=d/c.width,m=function(t){return!!(t&&t.constructor&&t.call&&t.apply)}(s)?s:function(){return s};return O.useEffect(function(){if(u){var a=u.current.getContext("2d"),t=Br(c.nodes,p,c.transform,!0);a.fillStyle=i,a.fillRect(0,0,d,h),t.forEach(function(t){var e=t.__rg.position,n=c.transform[0],r=c.transform[1],o=e.x*c.transform[2]+n,i=e.y*c.transform[2]+r;a.fillStyle=m(t),a.fillRect(o*y,i*y,t.__rg.width*y*c.transform[2],t.__rg.height*y*c.transform[2])})}},[f,c.transform,h]),k.createElement("canvas",{style:Dt({},ri,{},n,{height:h}),width:d,height:h,className:l,ref:u})},t.default=ni,t.getOutgoers=function(e,t){if(!Ir(e))return[];var n=t.filter(function(t){return t.source===e.id}).map(function(t){return t.target});return t.filter(function(t){return n.includes(t.id)})},t.isEdge=Mr,t.isNode=Ir,t.removeElements=function(t,e){var n=e.map(function(t){return t.id});return t.filter(function(t){return!n.includes(t.id)&&!n.includes(t.target)&&!n.includes(t.source)})},Object.defineProperty(t,"__esModule",{value:!0})}); //# sourceMappingURL=ReactGraph.js.map