From 161ab7fdfd8aefc081fa8445960b157d101c469c Mon Sep 17 00:00:00 2001 From: moklick Date: Tue, 8 Oct 2019 20:53:00 +0200 Subject: [PATCH] refactor(bundle): create separate plugins bundle closes #15 --- dist/ReactFlow.min.js | 4 +- dist/ReactFlow.min.js.map | 2 +- dist/plugins/index.css | 189 ++++++++++++++++++++++ dist/plugins/index.js | 8 + dist/plugins/index.js.map | 1 + examples/advanced/scripts/ExampleGraph.js | 3 +- package.json | 1 - rollup.config.js | 65 +++++--- src/index.js | 1 - src/utils/graph.js | 11 -- 10 files changed, 245 insertions(+), 40 deletions(-) create mode 100644 dist/plugins/index.css create mode 100644 dist/plugins/index.js create mode 100644 dist/plugins/index.js.map diff --git a/dist/ReactFlow.min.js b/dist/ReactFlow.min.js index 5e823f48..7477784c 100644 --- a/dist/ReactFlow.min.js +++ b/dist/ReactFlow.min.js @@ -1,8 +1,8 @@ -!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,e,n,r){"use strict";var o,i="default"in e?e.default:e;n=n&&n.hasOwnProperty("default")?n.default:n,r=r&&r.hasOwnProperty("default")?r.default:r;var a="undefined"!=typeof Symbol?Symbol("immer-nothing"):((o={})["immer-nothing"]=!0,o),s="undefined"!=typeof Symbol&&Symbol.for?Symbol.for("immer-draftable"):"__$immer_draftable",u="undefined"!=typeof Symbol&&Symbol.for?Symbol.for("immer-state"):"__$immer_state";function c(t){return!!t&&!!t[u]}function l(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[s]||!!t.constructor[s])}var f=Object.assign||function(t,e){for(var n in e)m(e,n)&&(t[n]=e[n]);return t},d="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames;function h(t,e){if(void 0===e&&(e=!1),Array.isArray(t))return t.slice();var n=Object.create(Object.getPrototypeOf(t));return d(t).forEach((function(r){if(r!==u){var o=Object.getOwnPropertyDescriptor(t,r),i=o.value;o.get&&e&&(i=o.get.call(t)),o.enumerable?n[r]=i:e&&Object.defineProperty(n,r,{value:i,writable:!0,configurable:!0})}})),n}function p(t,e){if(Array.isArray(t))for(var n=0;n=0;e--){var n=t[e][u];n.modified||(Array.isArray(n.base)?A(n)&&P(n):C(n)&&P(n))}}function C(t){for(var e=t.base,n=t.draft,r=Object.keys(n),o=r.length-1;o>=0;o--){var i=r[o],a=e[i];if(void 0===a&&!m(e,i))return!0;var s=n[i],c=s&&s[u];if(c?c.base!==a:!y(s,a))return!0}return r.length!==Object.keys(e).length}function A(t){var e=t.draft;if(e.length!==t.base.length)return!0;var n=Object.getOwnPropertyDescriptor(e,e.length-1);return!(!n||n.get)}var T=Object.freeze({willFinalize:function(t,e,n){t.drafts.forEach((function(t){t[u].finalizing=!0})),n?c(e)&&e[u].scope===t&&D(t.drafts):(t.patches&&function t(e){if(!e||"object"!=typeof e)return;var n=e[u];if(!n)return;var r=n.base;var o=n.draft;var i=n.assigned;if(Array.isArray(e)){if(A(n)){if(P(n),i.length=!0,o.lengthl&&a[f-1]===s[f+c-1];)--f;for(var d=l;d=f;--m){var y=e.concat([m]);n[g+m-f]={op:"add",path:y,value:s[m]},p&&r.push({op:"remove",path:y})}p||r.push({op:"replace",path:e.concat(["length"]),value:a.length})}(t,e,n,r):function(t,e,n,r){var o=t.base,i=t.copy;p(t.assigned,(function(t,a){var s=o[t],u=i[t],c=a?t in o?"replace":"add":"remove";if(s!==u||"replace"!==c){var l=e.concat(t);n.push("remove"===c?{op:c,path:l}:{op:c,path:l,value:u}),r.push("add"===c?{op:"remove",path:l}:"remove"===c?{op:"add",path:l,value:s}:{op:"replace",path:l,value:s})}}))}(t,e,n,r)}function V(t,e){for(var n=0;n0;)r[o]=arguments[o+1];return s.produce(t,(function(t){return e.call.apply(e,[n,t].concat(r))}))}}if("function"!=typeof e)throw new Error("The first or second argument to `produce` must be a function");if(void 0!==n&&"function"!=typeof n)throw new Error("The third argument to `produce` must be a function or undefined");if(l(t)){var u=v.enter(),c=this.createProxy(t),f=!0;try{r=e(c),f=!1}finally{f?u.revoke():u.leave()}return r instanceof Promise?r.then((function(t){return u.usePatches(n),o.processResult(t,u)}),(function(t){throw u.revoke(),t})):(u.usePatches(n),this.processResult(r,u))}return void 0===(r=e(t))?t:r!==a?r:void 0},H.prototype.createDraft=function(t){if(!l(t))throw new Error("First argument to `createDraft` must be a plain object, an array, or an immerable object");var e=v.enter(),n=this.createProxy(t);return n[u].isManual=!0,e.leave(),n},H.prototype.finishDraft=function(t,e){var n=t&&t[u];if(!n||!n.isManual)throw new Error("First argument to `finishDraft` must be a draft returned by `createDraft`");if(n.finalized)throw new Error("The given draft is already finalized");var r=n.scope;return r.usePatches(e),this.processResult(void 0,r)},H.prototype.setAutoFreeze=function(t){this.autoFreeze=t},H.prototype.setUseProxies=function(t){this.useProxies=t,f(this,t?L:T)},H.prototype.applyPatches=function(t,e){return c(t)?V(t,e):this.produce(t,(function(t){return V(t,e)}))},H.prototype.processResult=function(t,e){var n=e.drafts[0],r=void 0!==t&&t!==n;if(this.willFinalize(e,t,r),r){if(n[u].modified)throw e.revoke(),new Error("An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.");l(t)&&(t=this.finalize(t,null,e)),e.patches&&(e.patches.push({op:"replace",path:[],value:t}),e.inversePatches.push({op:"replace",path:[],value:n[u].base}))}else t=this.finalize(n,[],e);return e.revoke(),e.patches&&e.patchListener(e.patches,e.inversePatches),t!==a?t:void 0},H.prototype.finalize=function(t,e,n){var r=this,o=t[u];if(!o)return Object.isFrozen(t)?t:this.finalizeTree(t,null,n);if(o.scope!==n)return t;if(!o.modified)return o.base;if(!o.finalized){if(o.finalized=!0,this.finalizeTree(o.draft,e,n),this.onDelete)if(this.useProxies){var i=o.assigned;for(var a in i)i[a]||this.onDelete(o,a)}else{var s=o.base,c=o.copy;p(s,(function(t){m(c,t)||r.onDelete(o,t)}))}this.onCopy&&this.onCopy(o),this.autoFreeze&&n.canAutoFreeze&&Object.freeze(o.copy),e&&n.patches&&Y(o,e,n.patches,n.inversePatches)}return o.copy},H.prototype.finalizeTree=function(t,e,n){var r=this,o=t[u];o&&(this.useProxies||(o.copy=h(o.draft,!0)),t=o.copy);var i=!!e&&!!n.patches,a=function(s,u,f){if(u===f)throw Error("Immer forbids circular references");var d=!!o&&f===t;if(c(u)){var h=d&&i&&!o.assigned[s]?e.concat(s):null;if(c(u=r.finalize(u,h,n))&&(n.canAutoFreeze=!1),Array.isArray(f)||g(f,s)?f[s]=u:Object.defineProperty(f,s,{value:u}),d&&u===o.base[s])return}else{if(d&&y(u,o.base[s]))return;l(u)&&!Object.isFrozen(u)&&p(u,a)}d&&r.onAssign&&r.onAssign(o,s,u)};return p(t,a),t};var U=new H,q=U.setAutoFreeze.bind(U),F=(U.setUseProxies.bind(U),U.applyPatches.bind(U),U.createDraft.bind(U)),$=U.finishDraft.bind(U);var G=function(t){var e,n=t.Symbol;return"function"==typeof n?n.observable?e=n.observable:(e=n("observable"),n.observable=e):e="@@observable",e}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof module?module:Function("return this")()),W=function(){return Math.random().toString(36).substring(7).split("").join(".")},K={INIT:"@@redux/INIT"+W(),REPLACE:"@@redux/REPLACE"+W(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+W()}};function Z(t,e,n){var r;if("function"==typeof e&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function.");if("function"==typeof e&&void 0===n&&(n=e,e=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(Z)(t,e)}if("function"!=typeof t)throw new Error("Expected the reducer to be a function.");var o=t,i=e,a=[],s=a,u=!1;function c(){s===a&&(s=a.slice())}function l(){if(u)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return i}function f(t){if("function"!=typeof t)throw new Error("Expected the listener to be a function.");if(u)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var e=!0;return c(),s.push(t),function(){if(e){if(u)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");e=!1,c();var n=s.indexOf(t);s.splice(n,1)}}}function d(t){if(!function(t){if("object"!=typeof t||null===t)return!1;for(var e=t;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===t.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(u)throw new Error("Reducers may not dispatch actions.");try{u=!0,i=o(i,t)}finally{u=!1}for(var e=a=s,n=0;n=0?(this.lastItem=this.list[e],this.list[e].val):void 0},at.prototype.set=function(t,e){var n;return this.lastItem&&this.isEqual(this.lastItem.key,t)?(this.lastItem.val=e,this):(n=this.indexOf(t))>=0?(this.lastItem=this.list[n],this.list[n].val=e,this):(this.lastItem={key:t,val:e},this.list.push(this.lastItem),this.size++,this)},at.prototype.delete=function(t){var e;if(this.lastItem&&this.isEqual(this.lastItem.key,t)&&(this.lastItem=void 0),(e=this.indexOf(t))>=0)return this.size--,this.list.splice(e,1)[0]},at.prototype.has=function(t){var e;return!(!this.lastItem||!this.isEqual(this.lastItem.key,t))||(e=this.indexOf(t))>=0&&(this.lastItem=this.list[e],!0)},at.prototype.forEach=function(t,e){var n;for(n=0;n0&&(l[c]={cacheItem:u,arg:arguments[c]},f?lt(n,l):n.push(l),n.length>t&&ft(n.shift())),o.wasMemoized=f,o.numArgs=c+1,a};return o.limit=t,o.wasMemoized=!1,o.cache=e,o.lru=n,o}};function lt(t,e){var n,r,o,i,a,s=t.length,u=e.length;for(r=0;r=0&&(!(e=(o=t[n]).cacheItem.get(o.arg))||!e.size);n--)o.cacheItem.delete(o.arg)}var dt=e.createContext(),ht="undefined"!=typeof window?e.useLayoutEffect:e.useEffect;var pt,gt=(pt=dt,function(t){var n=e.useContext(pt),r=e.useRef(t),o=e.useRef(),i=e.useRef(!0),a=e.useRef(),s=e.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 u="An error occurred trying to map state in a useStoreState hook: "+t.message+".";throw a.current&&(u+="\nThis error may be related to the following error:\n"+a.current.stack+"\n\nOriginal stack trace:"),new Error(u)}return ht((function(){r.current=t,a.current=void 0})),ht((function(){var t=function(){try{var t=r.current(n.getState());if(t===o.current)return;o.current=t}catch(t){a.current=t}i.current&&s({})},e=n.subscribe(t);return t(),function(){i.current=!1,e()}}),[]),o.current});var mt=function(t){return function(n){return n(e.useContext(t).getActions())}}(dt);function yt(){return(yt=Object.assign||function(t){for(var e=1;e0?function(t,e){return p.reduce((function(t,n){var r=n.parentPath,o=n.key,i=n.reducer;return s(r,t,(function(t){return t[o]=i(t[o],e),t}))}),t)}(n,e):n;return t!==r&&h.forEach((function(t){var e=t.parentPath;(0,t.createComputedProperty)(kt(e,r))})),r}))}}var Ct=function(t){var e=t.children,n=t.store;return i.createElement(dt.Provider,{value:n},e)};function At(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Tt(){return(Tt=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function It(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(!(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t)))return;var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function Rt(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function Bt(t,e){for(var n,r=0,o=t.length;r0)for(var n,r,o=new Array(n),i=0;i=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),qt.hasOwnProperty(e)?{space:qt[e],local:t}:t}function $t(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===Ut&&e.documentElement.namespaceURI===Ut?e.createElement(t):e.createElementNS(n,t)}}function Gt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Wt(t){var e=Ft(t);return(e.local?Gt:$t)(e)}function Kt(){}function Zt(t){return null==t?Kt:function(){return this.querySelector(t)}}function Jt(){return[]}function Qt(t){return null==t?Jt:function(){return this.querySelectorAll(t)}}function te(t){return function(){return this.matches(t)}}function ee(t){return new Array(t.length)}function ne(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}ne.prototype={constructor:ne,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var re="$";function oe(t,e,n,r,o,i){for(var a,s=0,u=e.length,c=i.length;se?1:t>=e?0:NaN}function se(t){return function(){this.removeAttribute(t)}}function ue(t){return function(){this.removeAttributeNS(t.space,t.local)}}function ce(t,e){return function(){this.setAttribute(t,e)}}function le(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function fe(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function de(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function he(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function pe(t){return function(){this.style.removeProperty(t)}}function ge(t,e,n){return function(){this.style.setProperty(t,e,n)}}function me(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function ye(t,e){return t.style.getPropertyValue(e)||he(t).getComputedStyle(t,null).getPropertyValue(e)}function ve(t){return function(){delete this[t]}}function we(t,e){return function(){this[t]=e}}function be(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function _e(t){return t.trim().split(/^|\s+/)}function xe(t){return t.classList||new Ee(t)}function Ee(t){this._node=t,this._names=_e(t.getAttribute("class")||"")}function Se(t,e){for(var n=xe(t),r=-1,o=e.length;++r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Ve={},Be=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(Ve={mouseenter:"mouseover",mouseleave:"mouseout"}));function He(t,e,n){return t=Ue(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function Ue(t,e,n){return function(r){var o=Be;Be=r;try{t.call(this,this.__data__,e,n)}finally{Be=o}}}function qe(t){return function(){var e=this.__on;if(e){for(var n,r=0,o=-1,i=e.length;r=_&&(_=b+1);!(w=y[_])&&++_=0;)(r=o[i])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=ae);for(var n=this._groups,r=n.length,o=new Array(r),i=0;i1?this.each((null==e?pe:"function"==typeof e?me:ge)(t,e,null==n?"":n)):ye(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?ve:"function"==typeof e?be:we)(t,e)):this.node()[t]},classed:function(t,e){var n=_e(t+"");if(arguments.length<2){for(var r=xe(this.node()),o=-1,i=n.length;++o=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}(t+""),a=i.length;if(!(arguments.length<2)){for(s=e?Fe:qe,null==n&&(n=!1),r=0;r>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?new kn(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?new kn(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=hn.exec(t))?new kn(e[1],e[2],e[3],1):(e=pn.exec(t))?new kn(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=gn.exec(t))?Sn(e[1],e[2],e[3],e[4]):(e=mn.exec(t))?Sn(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=yn.exec(t))?Cn(e[1],e[2]/100,e[3]/100,1):(e=vn.exec(t))?Cn(e[1],e[2]/100,e[3]/100,e[4]):wn.hasOwnProperty(t)?En(wn[t]):"transparent"===t?new kn(NaN,NaN,NaN,0):null}function En(t){return new kn(t>>16&255,t>>8&255,255&t,1)}function Sn(t,e,n,r){return r<=0&&(t=e=n=NaN),new kn(t,e,n,r)}function Pn(t,e,n,r){return 1===arguments.length?((o=t)instanceof un||(o=xn(o)),o?new kn((o=o.rgb()).r,o.g,o.b,o.opacity):new kn):new kn(t,e,n,null==r?1:r);var o}function kn(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Nn(){return"#"+Dn(this.r)+Dn(this.g)+Dn(this.b)}function On(){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 Dn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Cn(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Tn(t,e,n,r)}function An(t){if(t instanceof Tn)return new Tn(t.h,t.s,t.l,t.opacity);if(t instanceof un||(t=xn(t)),!t)return new Tn;if(t instanceof Tn)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*(n0&&u<1?0:a,new Tn(a,s,u,t.opacity)}function Tn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Mn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function jn(t){return function(){return t}}function zn(t){return 1==(t=+t)?In:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):jn(isNaN(e)?n:e)}}function In(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):jn(isNaN(t)?e:t)}an(un,xn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:bn,formatHex:bn,formatHsl:function(){return An(this).formatHsl()},formatRgb:_n,toString:_n}),an(kn,Pn,sn(un,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new kn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new kn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Nn,formatHex:Nn,formatRgb:On,toString:On})),an(Tn,(function(t,e,n,r){return 1===arguments.length?An(t):new Tn(t,e,n,null==r?1:r)}),sn(un,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Tn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Tn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,o=2*n-r;return new kn(Mn(t>=240?t-240:t+120,o,r),Mn(t,o,r),Mn(t<120?t+240:t-120,o,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var Rn=function t(e){var n=zn(e);function r(t,e){var r=n((t=Pn(t)).r,(e=Pn(e)).r),o=n(t.g,e.g),i=n(t.b,e.b),a=In(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=o(e),t.b=i(e),t.opacity=a(e),t+""}}return r.gamma=t,r}(1);function Xn(t,e){return e-=t=+t,function(n){return t+e*n}}var Ln=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Yn=new RegExp(Ln.source,"g");function Vn(t,e){var n,r,o,i=Ln.lastIndex=Yn.lastIndex=0,a=-1,s=[],u=[];for(t+="",e+="";(n=Ln.exec(t))&&(r=Yn.exec(e));)(o=r.index)>i&&(o=e.slice(i,o),s[a]?s[a]+=o:s[++a]=o),(n=n[0])===(r=r[0])?s[a]?s[a]+=r:s[++a]=r:(s[++a]=null,u.push({i:a,x:Xn(n,r)})),i=Yn.lastIndex;return i180?e+=360:e-t>180&&(t+=360),i.push({i:n.push(o(n)+"rotate(",null,r)-2,x:Xn(t,e)})):e&&n.push(o(n)+"rotate("+e+r)}(i.rotate,a.rotate,s,u),function(t,e,n,i){t!==e?i.push({i:n.push(o(n)+"skewX(",null,r)-2,x:Xn(t,e)}):e&&n.push(o(n)+"skewX("+e+r)}(i.skewX,a.skewX,s,u),function(t,e,n,r,i,a){if(t!==n||e!==r){var s=i.push(o(i)+"scale(",null,",",null,")");a.push({i:s-4,x:Xn(t,n)},{i:s-2,x:Xn(e,r)})}else 1===n&&1===r||i.push(o(i)+"scale("+n+","+r+")")}(i.scaleX,i.scaleY,a.scaleX,a.scaleY,s,u),i=a=null,function(t){for(var e,n=-1,r=u.length;++n=0&&e._call.call(null,t),e=e._next;--ar}()}finally{ar=0,function(){var t,e,n=or,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:or=e);ir=t,_r(r)}(),fr=0}}function br(){var t=hr.now(),e=t-lr;e>cr&&(dr-=e,lr=t)}function _r(t){ar||(sr&&(sr=clearTimeout(sr)),t-fr>24?(t<1/0&&(sr=setTimeout(wr,t-hr.now()-dr)),ur&&(ur=clearInterval(ur))):(ur||(lr=hr.now(),ur=setInterval(br,cr)),ar=1,pr(wr)))}function xr(t,e,n){var r=new yr;return e=null==e?0:+e,r.restart((function(n){r.stop(),t(n+e)}),e,n),r}yr.prototype=vr.prototype={constructor:yr,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?gr():+n)+(null==e?0:+e),this._next||ir===this||(ir?ir._next=this:or=this,ir=this),this._call=t,this._time=n,_r()},stop:function(){this._call&&(this._call=null,this._time=1/0,_r())}};var Er=Lt("start","end","cancel","interrupt"),Sr=[],Pr=0,kr=1,Nr=2,Or=3,Dr=4,Cr=5,Ar=6;function Tr(t,e,n,r,o,i){var a=t.__transition;if(a){if(n in a)return}else t.__transition={};!function(t,e,n){var r,o=t.__transition;function i(u){var c,l,f,d;if(n.state!==kr)return s();for(c in o)if((d=o[c]).name===n.name){if(d.state===Or)return xr(i);d.state===Dr?(d.state=Ar,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete o[c]):+cPr)throw new Error("too late; already scheduled");return n}function jr(t,e){var n=zr(t,e);if(n.state>Or)throw new Error("too late; already running");return n}function zr(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Ir(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>Nr&&n.state=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Mr:jr;return function(){var a=i(this,t),s=a.on;s!==r&&(o=(r=s).copy()).on(e,n),a.on=o}}(n,t,e))},attr:function(t,e){var n=Ft(t),r="transform"===n?Zn:Yr;return this.attrTween(t,"function"==typeof e?(n.local?Fr:qr)(n,r,Lr(this,"attr."+t,e)):null==e?(n.local?Br:Vr)(n):(n.local?Ur:Hr)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=Ft(t);return this.tween(n,(r.local?$r:Gr)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?Kn:Yr;return null==e?this.styleTween(t,function(t,e){var n,r,o;return function(){var i=ye(this,t),a=(this.style.removeProperty(t),ye(this,t));return i===a?null:i===n&&a===r?o:o=e(n=i,r=a)}}(t,r)).on("end.style."+t,to(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,o,i;return function(){var a=ye(this,t),s=n(this),u=s+"";return null==s&&(this.style.removeProperty(t),u=s=ye(this,t)),a===u?null:a===r&&u===o?i:(o=u,i=e(r=a,s))}}(t,r,Lr(this,"style."+t,e))).each(function(t,e){var n,r,o,i,a="style."+e,s="end."+a;return function(){var u=jr(this,t),c=u.on,l=null==u.value[a]?i||(i=to(e)):void 0;c===n&&o===l||(r=(n=c).copy()).on(s,o=l),u.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,o,i=n+"";return function(){var a=ye(this,t);return a===i?null:a===r?o:o=e(r=a,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,function(t,e,n){var r,o;function i(){var i=e.apply(this,arguments);return i!==o&&(r=(o=i)&&function(t,e,n){return function(r){this.style.setProperty(t,e(r),n)}}(t,i,n)),r}return i._value=e,i}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Lr(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,o=zr(this.node(),n).tween,i=0,a=o.length;ir?(r+o)/2:Math.min(0,r)||Math.max(0,o),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}var bo=function t(e,n){if(e===n)return!0;if(e&&n&&"object"==typeof e&&"object"==typeof n){if(e.constructor!==n.constructor)return!1;var r,o,i;if(Array.isArray(e)){if((r=e.length)!=n.length)return!1;for(o=r;0!=o--;)if(!t(e[o],n[o]))return!1;return!0}if(e.constructor===RegExp)return e.source===n.source&&e.flags===n.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===n.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===n.toString();if((r=(i=Object.keys(e)).length)!==Object.keys(n).length)return!1;for(o=r;0!=o--;)if(!Object.prototype.hasOwnProperty.call(n,i[o]))return!1;for(o=r;0!=o--;){var a=i[o];if(!t(e[a],n[a]))return!1}return!0}return e!=e&&n!=n},_o={setOnConnect:St((function(t,e){t.onConnect=e})),setNodes:St((function(t,e){t.nodes=e})),setEdges:St((function(t,e){t.edges=e})),updateNodeData:St((function(t,e){var n=e.id,r=zt(e,["id"]);t.nodes.forEach((function(t){t.id===n&&(t.__rg=jt({},t.__rg,{},r))}))})),updateNodePos:St((function(t,e){var n=e.id,r=e.pos;t.nodes.forEach((function(t){t.id===n&&(t.__rg=jt({},t.__rg,{position:r}))}))})),setSelection:St((function(t,e){t.selectionActive=e})),setNodesSelection:St((function(t,e){var n=e.isActive,r=e.selection;if(!n)return t.nodesSelectionActive=!1,void(t.selectedElements=[]);var o=Ao(t.nodes,r,t.transform),i=Co(o);t.selection=r,t.nodesSelectionActive=!0,t.selectedNodesBbox=i,t.nodesSelectionActive=!0})),setSelectedElements:St((function(t,e){var n=Array.isArray(e)?e:[e],r=!bo(n,t.selectedElements)?n:t.selectedElements;t.selectedElements=r})),updateSelection:St((function(t,e){var n=Ao(t.nodes,e,t.transform),r=To(n,t.edges),o=[].concat(Rt(n),Rt(r)),i=!bo(o,t.selectedElements);t.selection=e,t.selectedElements=i?o:t.selectedElements})),updateTransform:St((function(t,e){t.transform=[e.x,e.y,e.k]})),updateSize:St((function(t,e){t.width=e.width,t.height=e.height})),initD3:St((function(t,e){var n=e.zoom,r=e.selection;t.d3Zoom=n,t.d3Selection=r,t.d3Initialised=!0})),setConnectionPosition:St((function(t,e){t.connectionPosition=e})),setConnectionSourceId:St((function(t,e){t.connectionSourceId=e}))},xo=function(t,e){void 0===e&&(e={});var n=e,r=n.compose,o=n.devTools,i=void 0===o||o,a=n.disableImmer,s=void 0!==a&&a,u=n.enhancers,c=void 0===u?[]:u,l=n.initialState,f=void 0===l?{}:l,d=n.injections,h=n.middleware,p=void 0===h?[]:h,g=n.mockActions,m=void 0!==g&&g,y=n.name,v=void 0===y?"EasyPeasyStore":y,w=n.reducerEnhancer,b=void 0===w?function(t){return t}:w,_=function(t){return yt({},t,{easyPeasyReplaceState:St((function(t,e){return e}))})},x=_(t),E=[],S={},P=function(t){void 0===t&&(t={}),S.internals=Dt({disableImmer:s,initialState:t,injections:d,model:x,reducerEnhancer:b,references:S})};P(f);var k=[function(t){return function(e){return function(n){return S.internals.computedState.currentState=t.getState(),S.internals.computedState.isInReducer=!0,e(n)}}},it].concat(p,[function(){return function(t){return function(e){var n=t(e);if(e&&S.internals.listenerActionMap[e.type]&&S.internals.listenerActionMap[e.type].length>0){var r=S.internals.actionCreatorDict[e.type];S.internals.listenerActionMap[e.type].forEach((function(t){t({type:r?r.type:e.type,payload:e.payload,error:e.error,result:e.result})}))}return n}}}]);m&&k.push((function(){return function(){return function(t){null!=t&&E.push(t)}}}));var N=r||(i&&"undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({name:v}):et),O=Z(S.internals.reducer,S.internals.defaultState,N.apply(void 0,[nt.apply(void 0,k)].concat(c)));O.subscribe((function(){S.internals.computedState.isInReducer=!1})),S.dispatch=O.dispatch,S.getState=O.getState;var D=function(){Object.keys(O.dispatch).forEach((function(t){delete O.dispatch[t]})),Object.keys(S.internals.actionCreators).forEach((function(t){O.dispatch[t]=S.internals.actionCreators[t]}))};D();var C=function(t){var e=O.getState();t&&delete e[t],P(O.getState()),O.replaceReducer(S.internals.reducer),S.internals.actionCreatorDict["@action.easyPeasyReplaceState"](S.internals.defaultState),D()};return Object.assign(O,{addModel:function(t,e){x[t]&&"production"!==process.env.NODE_ENV&&(console.warn('easy-peasy: The store model already contains a model definition for "'+t+'"'),O.removeModel(t)),x[t]=e,C()},clearMockedActions:function(){E=[]},getActions:function(){return S.internals.actionCreators},getListeners:function(){return S.internals.listenerActionCreators},getMockedActions:function(){return[].concat(E)},reconfigure:function(t){x=_(t),C()},removeModel:function(t){x[t]?(delete x[t],C(t)):"production"!==process.env.NODE_ENV&&console.warn('easy-peasy: The store model does not contain a model definition for "'+t+'"')}})}(jt({width:0,height:0,transform:[0,0,1],nodes:[],edges:[],selectedElements:[],selectedNodesBbox:{x:0,y:0,width:0,height:0},d3Zoom:null,d3Selection:null,d3Initialised:!1,nodesSelectionActive:!1,selectionActive:!1,selection:{},connectionSourceId:null,connectionPosition:{x:0,y:0},onConnect:function(){}},_o)),Eo=function(t){return void 0!==t},So=function(t){return t&&t.target&&["INPUT","SELECT","TEXTAREA"].includes(t.target.nodeName)},Po=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{width:t.offsetWidth,height:t.offsetHeight}},ko=function(t){return t.source&&t.target},No=function(t){return!t.source&&!t.target};var Oo=function(t,e){var n=t.x,r=t.y;return{x:(n-e[0])*(1/[e[2]]),y:(r-e[1])*(1/[e[2]])}},Do=function(t,e){if(!t.id)throw new Error("All elements (nodes and edges) need to have an id.");return ko(t)?jt({},t,{id:t.id.toString(),type:t.type||"default"}):jt({},t,{id:t.id.toString(),type:t.type||"default",__rg:{position:Oo(t.position,e),width:null,height:null,handleBounds:{}}})},Co=function(t){var e=t.reduce((function(t,e){var n=e.__rg.position,r=n.x+e.__rg.width,o=n.y+e.__rg.height;return n.xt.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}},Ao=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[0,0,1],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return t.filter((function(t){var o=(e.x-n[0])*(1/n[2]),i=(e.y-n[1])*(1/n[2]),a=e.width*(1/n[2]),s=e.height*(1/n[2]),u=t.__rg,c=u.position,l=u.width,f=u.height,d=r?-l:l,h=r?0:f,p=r?l:0,g=r?f:0;return c.x+p>o&&c.x+di&&c.y+h0&&void 0!==arguments[0]?arguments[0]:{},e=t.padding,n=void 0===e?0:e,r=xo.getState(),o=Co(r.nodes),i=Math.max(o.width,o.height),a=Math.min(r.width,r.height)/(i+i*n),s=o.x+o.width/2,u=o.y+o.height/2,c=[r.width/2-s*a,r.height/2-u*a],l=lo.translate(c[0],c[1]).scale(a);r.d3Selection.call(r.d3Zoom.transform,l)},jo=function(){var t=xo.getState();t.d3Zoom.scaleTo(t.d3Selection,t.transform[2]+.2)},zo=function(){var t=xo.getState();t.d3Zoom.scaleTo(t.d3Selection,t.transform[2]-.2)};var Io=e.memo((function(t){var e=gt((function(t){return{nodes:t.nodes,transform:t.transform,selectedElements:t.selectedElements}})),n=e.transform,r=e.nodes,o={transform:"translate(".concat(n[0],"px,").concat(n[1],"px) scale(").concat(n[2],")")};return i.createElement("div",{className:"react-flow__nodes",style:o},r.map((function(n){return function(t,e,n){var r=t.type||"default";e.nodeTypes[r]||console.warn('No node type found for type "'.concat(r,'". Using fallback type "default".'));var o=e.nodeTypes[r]||e.nodeTypes.default,a=n.selectedElements.filter(No).map((function(t){return t.id})).includes(t.id);return i.createElement(o,{key:t.id,id:t.id,type:t.type,data:t.data,xPos:t.__rg.position.x,yPos:t.__rg.position.y,onClick:e.onElementClick,onNodeDragStop:e.onNodeDragStop,transform:n.transform,selected:a,style:t.style})}(n,t,e)})))}));function Ro(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function Xo(t,e){return t(e={exports:{}},e.exports),e.exports}Io.displayName="NodeRenderer",Io.whyDidYouRender=!1;var Lo=Xo((function(t){ +!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,e,n,r){"use strict";var o,i="default"in e?e.default:e;n=n&&n.hasOwnProperty("default")?n.default:n,r=r&&r.hasOwnProperty("default")?r.default:r;var a="undefined"!=typeof Symbol?Symbol("immer-nothing"):((o={})["immer-nothing"]=!0,o),s="undefined"!=typeof Symbol&&Symbol.for?Symbol.for("immer-draftable"):"__$immer_draftable",u="undefined"!=typeof Symbol&&Symbol.for?Symbol.for("immer-state"):"__$immer_state";function c(t){return!!t&&!!t[u]}function l(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[s]||!!t.constructor[s])}var f=Object.assign||function(t,e){for(var n in e)m(e,n)&&(t[n]=e[n]);return t},d="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames;function h(t,e){if(void 0===e&&(e=!1),Array.isArray(t))return t.slice();var n=Object.create(Object.getPrototypeOf(t));return d(t).forEach((function(r){if(r!==u){var o=Object.getOwnPropertyDescriptor(t,r),i=o.value;o.get&&e&&(i=o.get.call(t)),o.enumerable?n[r]=i:e&&Object.defineProperty(n,r,{value:i,writable:!0,configurable:!0})}})),n}function p(t,e){if(Array.isArray(t))for(var n=0;n=0;e--){var n=t[e][u];n.modified||(Array.isArray(n.base)?T(n)&&P(n):A(n)&&P(n))}}function A(t){for(var e=t.base,n=t.draft,r=Object.keys(n),o=r.length-1;o>=0;o--){var i=r[o],a=e[i];if(void 0===a&&!m(e,i))return!0;var s=n[i],c=s&&s[u];if(c?c.base!==a:!y(s,a))return!0}return r.length!==Object.keys(e).length}function T(t){var e=t.draft;if(e.length!==t.base.length)return!0;var n=Object.getOwnPropertyDescriptor(e,e.length-1);return!(!n||n.get)}var C=Object.freeze({willFinalize:function(t,e,n){t.drafts.forEach((function(t){t[u].finalizing=!0})),n?c(e)&&e[u].scope===t&&D(t.drafts):(t.patches&&function t(e){if(!e||"object"!=typeof e)return;var n=e[u];if(!n)return;var r=n.base;var o=n.draft;var i=n.assigned;if(Array.isArray(e)){if(T(n)){if(P(n),i.length=!0,o.lengthl&&a[f-1]===s[f+c-1];)--f;for(var d=l;d=f;--m){var y=e.concat([m]);n[g+m-f]={op:"add",path:y,value:s[m]},p&&r.push({op:"remove",path:y})}p||r.push({op:"replace",path:e.concat(["length"]),value:a.length})}(t,e,n,r):function(t,e,n,r){var o=t.base,i=t.copy;p(t.assigned,(function(t,a){var s=o[t],u=i[t],c=a?t in o?"replace":"add":"remove";if(s!==u||"replace"!==c){var l=e.concat(t);n.push("remove"===c?{op:c,path:l}:{op:c,path:l,value:u}),r.push("add"===c?{op:"remove",path:l}:"remove"===c?{op:"add",path:l,value:s}:{op:"replace",path:l,value:s})}}))}(t,e,n,r)}function B(t,e){for(var n=0;n0;)r[o]=arguments[o+1];return s.produce(t,(function(t){return e.call.apply(e,[n,t].concat(r))}))}}if("function"!=typeof e)throw new Error("The first or second argument to `produce` must be a function");if(void 0!==n&&"function"!=typeof n)throw new Error("The third argument to `produce` must be a function or undefined");if(l(t)){var u=v.enter(),c=this.createProxy(t),f=!0;try{r=e(c),f=!1}finally{f?u.revoke():u.leave()}return r instanceof Promise?r.then((function(t){return u.usePatches(n),o.processResult(t,u)}),(function(t){throw u.revoke(),t})):(u.usePatches(n),this.processResult(r,u))}return void 0===(r=e(t))?t:r!==a?r:void 0},H.prototype.createDraft=function(t){if(!l(t))throw new Error("First argument to `createDraft` must be a plain object, an array, or an immerable object");var e=v.enter(),n=this.createProxy(t);return n[u].isManual=!0,e.leave(),n},H.prototype.finishDraft=function(t,e){var n=t&&t[u];if(!n||!n.isManual)throw new Error("First argument to `finishDraft` must be a draft returned by `createDraft`");if(n.finalized)throw new Error("The given draft is already finalized");var r=n.scope;return r.usePatches(e),this.processResult(void 0,r)},H.prototype.setAutoFreeze=function(t){this.autoFreeze=t},H.prototype.setUseProxies=function(t){this.useProxies=t,f(this,t?L:C)},H.prototype.applyPatches=function(t,e){return c(t)?B(t,e):this.produce(t,(function(t){return B(t,e)}))},H.prototype.processResult=function(t,e){var n=e.drafts[0],r=void 0!==t&&t!==n;if(this.willFinalize(e,t,r),r){if(n[u].modified)throw e.revoke(),new Error("An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.");l(t)&&(t=this.finalize(t,null,e)),e.patches&&(e.patches.push({op:"replace",path:[],value:t}),e.inversePatches.push({op:"replace",path:[],value:n[u].base}))}else t=this.finalize(n,[],e);return e.revoke(),e.patches&&e.patchListener(e.patches,e.inversePatches),t!==a?t:void 0},H.prototype.finalize=function(t,e,n){var r=this,o=t[u];if(!o)return Object.isFrozen(t)?t:this.finalizeTree(t,null,n);if(o.scope!==n)return t;if(!o.modified)return o.base;if(!o.finalized){if(o.finalized=!0,this.finalizeTree(o.draft,e,n),this.onDelete)if(this.useProxies){var i=o.assigned;for(var a in i)i[a]||this.onDelete(o,a)}else{var s=o.base,c=o.copy;p(s,(function(t){m(c,t)||r.onDelete(o,t)}))}this.onCopy&&this.onCopy(o),this.autoFreeze&&n.canAutoFreeze&&Object.freeze(o.copy),e&&n.patches&&Y(o,e,n.patches,n.inversePatches)}return o.copy},H.prototype.finalizeTree=function(t,e,n){var r=this,o=t[u];o&&(this.useProxies||(o.copy=h(o.draft,!0)),t=o.copy);var i=!!e&&!!n.patches,a=function(s,u,f){if(u===f)throw Error("Immer forbids circular references");var d=!!o&&f===t;if(c(u)){var h=d&&i&&!o.assigned[s]?e.concat(s):null;if(c(u=r.finalize(u,h,n))&&(n.canAutoFreeze=!1),Array.isArray(f)||g(f,s)?f[s]=u:Object.defineProperty(f,s,{value:u}),d&&u===o.base[s])return}else{if(d&&y(u,o.base[s]))return;l(u)&&!Object.isFrozen(u)&&p(u,a)}d&&r.onAssign&&r.onAssign(o,s,u)};return p(t,a),t};var U=new H,q=U.setAutoFreeze.bind(U),F=(U.setUseProxies.bind(U),U.applyPatches.bind(U),U.createDraft.bind(U)),$=U.finishDraft.bind(U);var G=function(t){var e,n=t.Symbol;return"function"==typeof n?n.observable?e=n.observable:(e=n("observable"),n.observable=e):e="@@observable",e}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof module?module:Function("return this")()),W=function(){return Math.random().toString(36).substring(7).split("").join(".")},K={INIT:"@@redux/INIT"+W(),REPLACE:"@@redux/REPLACE"+W(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+W()}};function Z(t,e,n){var r;if("function"==typeof e&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function.");if("function"==typeof e&&void 0===n&&(n=e,e=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(Z)(t,e)}if("function"!=typeof t)throw new Error("Expected the reducer to be a function.");var o=t,i=e,a=[],s=a,u=!1;function c(){s===a&&(s=a.slice())}function l(){if(u)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return i}function f(t){if("function"!=typeof t)throw new Error("Expected the listener to be a function.");if(u)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var e=!0;return c(),s.push(t),function(){if(e){if(u)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");e=!1,c();var n=s.indexOf(t);s.splice(n,1)}}}function d(t){if(!function(t){if("object"!=typeof t||null===t)return!1;for(var e=t;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===t.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(u)throw new Error("Reducers may not dispatch actions.");try{u=!0,i=o(i,t)}finally{u=!1}for(var e=a=s,n=0;n=0?(this.lastItem=this.list[e],this.list[e].val):void 0},at.prototype.set=function(t,e){var n;return this.lastItem&&this.isEqual(this.lastItem.key,t)?(this.lastItem.val=e,this):(n=this.indexOf(t))>=0?(this.lastItem=this.list[n],this.list[n].val=e,this):(this.lastItem={key:t,val:e},this.list.push(this.lastItem),this.size++,this)},at.prototype.delete=function(t){var e;if(this.lastItem&&this.isEqual(this.lastItem.key,t)&&(this.lastItem=void 0),(e=this.indexOf(t))>=0)return this.size--,this.list.splice(e,1)[0]},at.prototype.has=function(t){var e;return!(!this.lastItem||!this.isEqual(this.lastItem.key,t))||(e=this.indexOf(t))>=0&&(this.lastItem=this.list[e],!0)},at.prototype.forEach=function(t,e){var n;for(n=0;n0&&(l[c]={cacheItem:u,arg:arguments[c]},f?lt(n,l):n.push(l),n.length>t&&ft(n.shift())),o.wasMemoized=f,o.numArgs=c+1,a};return o.limit=t,o.wasMemoized=!1,o.cache=e,o.lru=n,o}};function lt(t,e){var n,r,o,i,a,s=t.length,u=e.length;for(r=0;r=0&&(!(e=(o=t[n]).cacheItem.get(o.arg))||!e.size);n--)o.cacheItem.delete(o.arg)}var dt=e.createContext(),ht="undefined"!=typeof window?e.useLayoutEffect:e.useEffect;var pt,gt=(pt=dt,function(t){var n=e.useContext(pt),r=e.useRef(t),o=e.useRef(),i=e.useRef(!0),a=e.useRef(),s=e.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 u="An error occurred trying to map state in a useStoreState hook: "+t.message+".";throw a.current&&(u+="\nThis error may be related to the following error:\n"+a.current.stack+"\n\nOriginal stack trace:"),new Error(u)}return ht((function(){r.current=t,a.current=void 0})),ht((function(){var t=function(){try{var t=r.current(n.getState());if(t===o.current)return;o.current=t}catch(t){a.current=t}i.current&&s({})},e=n.subscribe(t);return t(),function(){i.current=!1,e()}}),[]),o.current});var mt=function(t){return function(n){return n(e.useContext(t).getActions())}}(dt);function yt(){return(yt=Object.assign||function(t){for(var e=1;e0?function(t,e){return p.reduce((function(t,n){var r=n.parentPath,o=n.key,i=n.reducer;return s(r,t,(function(t){return t[o]=i(t[o],e),t}))}),t)}(n,e):n;return t!==r&&h.forEach((function(t){var e=t.parentPath;(0,t.createComputedProperty)(kt(e,r))})),r}))}}var At=function(t){var e=t.children,n=t.store;return i.createElement(dt.Provider,{value:n},e)};function Tt(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Ct(){return(Ct=Object.assign||function(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function It(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(!(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t)))return;var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function Rt(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function Vt(t,e){for(var n,r=0,o=t.length;r0)for(var n,r,o=new Array(n),i=0;i=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),qt.hasOwnProperty(e)?{space:qt[e],local:t}:t}function $t(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===Ut&&e.documentElement.namespaceURI===Ut?e.createElement(t):e.createElementNS(n,t)}}function Gt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Wt(t){var e=Ft(t);return(e.local?Gt:$t)(e)}function Kt(){}function Zt(t){return null==t?Kt:function(){return this.querySelector(t)}}function Jt(){return[]}function Qt(t){return null==t?Jt:function(){return this.querySelectorAll(t)}}function te(t){return function(){return this.matches(t)}}function ee(t){return new Array(t.length)}function ne(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}ne.prototype={constructor:ne,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var re="$";function oe(t,e,n,r,o,i){for(var a,s=0,u=e.length,c=i.length;se?1:t>=e?0:NaN}function se(t){return function(){this.removeAttribute(t)}}function ue(t){return function(){this.removeAttributeNS(t.space,t.local)}}function ce(t,e){return function(){this.setAttribute(t,e)}}function le(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function fe(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function de(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function he(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function pe(t){return function(){this.style.removeProperty(t)}}function ge(t,e,n){return function(){this.style.setProperty(t,e,n)}}function me(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function ye(t,e){return t.style.getPropertyValue(e)||he(t).getComputedStyle(t,null).getPropertyValue(e)}function ve(t){return function(){delete this[t]}}function we(t,e){return function(){this[t]=e}}function be(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function _e(t){return t.trim().split(/^|\s+/)}function xe(t){return t.classList||new Ee(t)}function Ee(t){this._node=t,this._names=_e(t.getAttribute("class")||"")}function Se(t,e){for(var n=xe(t),r=-1,o=e.length;++r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Be={},Ve=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(Be={mouseenter:"mouseover",mouseleave:"mouseout"}));function He(t,e,n){return t=Ue(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function Ue(t,e,n){return function(r){var o=Ve;Ve=r;try{t.call(this,this.__data__,e,n)}finally{Ve=o}}}function qe(t){return function(){var e=this.__on;if(e){for(var n,r=0,o=-1,i=e.length;r=_&&(_=b+1);!(w=y[_])&&++_=0;)(r=o[i])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=ae);for(var n=this._groups,r=n.length,o=new Array(r),i=0;i1?this.each((null==e?pe:"function"==typeof e?me:ge)(t,e,null==n?"":n)):ye(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?ve:"function"==typeof e?be:we)(t,e)):this.node()[t]},classed:function(t,e){var n=_e(t+"");if(arguments.length<2){for(var r=xe(this.node()),o=-1,i=n.length;++o=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}(t+""),a=i.length;if(!(arguments.length<2)){for(s=e?Fe:qe,null==n&&(n=!1),r=0;r>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?new kn(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?new kn(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=hn.exec(t))?new kn(e[1],e[2],e[3],1):(e=pn.exec(t))?new kn(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=gn.exec(t))?Sn(e[1],e[2],e[3],e[4]):(e=mn.exec(t))?Sn(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=yn.exec(t))?An(e[1],e[2]/100,e[3]/100,1):(e=vn.exec(t))?An(e[1],e[2]/100,e[3]/100,e[4]):wn.hasOwnProperty(t)?En(wn[t]):"transparent"===t?new kn(NaN,NaN,NaN,0):null}function En(t){return new kn(t>>16&255,t>>8&255,255&t,1)}function Sn(t,e,n,r){return r<=0&&(t=e=n=NaN),new kn(t,e,n,r)}function Pn(t,e,n,r){return 1===arguments.length?((o=t)instanceof un||(o=xn(o)),o?new kn((o=o.rgb()).r,o.g,o.b,o.opacity):new kn):new kn(t,e,n,null==r?1:r);var o}function kn(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function On(){return"#"+Dn(this.r)+Dn(this.g)+Dn(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 Dn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function An(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Cn(t,e,n,r)}function Tn(t){if(t instanceof Cn)return new Cn(t.h,t.s,t.l,t.opacity);if(t instanceof un||(t=xn(t)),!t)return new Cn;if(t instanceof Cn)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*(n0&&u<1?0:a,new Cn(a,s,u,t.opacity)}function Cn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Mn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function jn(t){return function(){return t}}function zn(t){return 1==(t=+t)?In:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):jn(isNaN(e)?n:e)}}function In(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):jn(isNaN(t)?e:t)}an(un,xn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:bn,formatHex:bn,formatHsl:function(){return Tn(this).formatHsl()},formatRgb:_n,toString:_n}),an(kn,Pn,sn(un,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new kn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new kn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:On,formatHex:On,formatRgb:Nn,toString:Nn})),an(Cn,(function(t,e,n,r){return 1===arguments.length?Tn(t):new Cn(t,e,n,null==r?1:r)}),sn(un,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Cn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Cn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,o=2*n-r;return new kn(Mn(t>=240?t-240:t+120,o,r),Mn(t,o,r),Mn(t<120?t+240:t-120,o,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var Rn=function t(e){var n=zn(e);function r(t,e){var r=n((t=Pn(t)).r,(e=Pn(e)).r),o=n(t.g,e.g),i=n(t.b,e.b),a=In(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=o(e),t.b=i(e),t.opacity=a(e),t+""}}return r.gamma=t,r}(1);function Xn(t,e){return e-=t=+t,function(n){return t+e*n}}var Ln=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Yn=new RegExp(Ln.source,"g");function Bn(t,e){var n,r,o,i=Ln.lastIndex=Yn.lastIndex=0,a=-1,s=[],u=[];for(t+="",e+="";(n=Ln.exec(t))&&(r=Yn.exec(e));)(o=r.index)>i&&(o=e.slice(i,o),s[a]?s[a]+=o:s[++a]=o),(n=n[0])===(r=r[0])?s[a]?s[a]+=r:s[++a]=r:(s[++a]=null,u.push({i:a,x:Xn(n,r)})),i=Yn.lastIndex;return i180?e+=360:e-t>180&&(t+=360),i.push({i:n.push(o(n)+"rotate(",null,r)-2,x:Xn(t,e)})):e&&n.push(o(n)+"rotate("+e+r)}(i.rotate,a.rotate,s,u),function(t,e,n,i){t!==e?i.push({i:n.push(o(n)+"skewX(",null,r)-2,x:Xn(t,e)}):e&&n.push(o(n)+"skewX("+e+r)}(i.skewX,a.skewX,s,u),function(t,e,n,r,i,a){if(t!==n||e!==r){var s=i.push(o(i)+"scale(",null,",",null,")");a.push({i:s-4,x:Xn(t,n)},{i:s-2,x:Xn(e,r)})}else 1===n&&1===r||i.push(o(i)+"scale("+n+","+r+")")}(i.scaleX,i.scaleY,a.scaleX,a.scaleY,s,u),i=a=null,function(t){for(var e,n=-1,r=u.length;++n=0&&e._call.call(null,t),e=e._next;--ar}()}finally{ar=0,function(){var t,e,n=or,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:or=e);ir=t,_r(r)}(),fr=0}}function br(){var t=hr.now(),e=t-lr;e>cr&&(dr-=e,lr=t)}function _r(t){ar||(sr&&(sr=clearTimeout(sr)),t-fr>24?(t<1/0&&(sr=setTimeout(wr,t-hr.now()-dr)),ur&&(ur=clearInterval(ur))):(ur||(lr=hr.now(),ur=setInterval(br,cr)),ar=1,pr(wr)))}function xr(t,e,n){var r=new yr;return e=null==e?0:+e,r.restart((function(n){r.stop(),t(n+e)}),e,n),r}yr.prototype=vr.prototype={constructor:yr,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?gr():+n)+(null==e?0:+e),this._next||ir===this||(ir?ir._next=this:or=this,ir=this),this._call=t,this._time=n,_r()},stop:function(){this._call&&(this._call=null,this._time=1/0,_r())}};var Er=Lt("start","end","cancel","interrupt"),Sr=[],Pr=0,kr=1,Or=2,Nr=3,Dr=4,Ar=5,Tr=6;function Cr(t,e,n,r,o,i){var a=t.__transition;if(a){if(n in a)return}else t.__transition={};!function(t,e,n){var r,o=t.__transition;function i(u){var c,l,f,d;if(n.state!==kr)return s();for(c in o)if((d=o[c]).name===n.name){if(d.state===Nr)return xr(i);d.state===Dr?(d.state=Tr,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete o[c]):+cPr)throw new Error("too late; already scheduled");return n}function jr(t,e){var n=zr(t,e);if(n.state>Nr)throw new Error("too late; already running");return n}function zr(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Ir(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>Or&&n.state=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Mr:jr;return function(){var a=i(this,t),s=a.on;s!==r&&(o=(r=s).copy()).on(e,n),a.on=o}}(n,t,e))},attr:function(t,e){var n=Ft(t),r="transform"===n?Zn:Yr;return this.attrTween(t,"function"==typeof e?(n.local?Fr:qr)(n,r,Lr(this,"attr."+t,e)):null==e?(n.local?Vr:Br)(n):(n.local?Ur:Hr)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=Ft(t);return this.tween(n,(r.local?$r:Gr)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?Kn:Yr;return null==e?this.styleTween(t,function(t,e){var n,r,o;return function(){var i=ye(this,t),a=(this.style.removeProperty(t),ye(this,t));return i===a?null:i===n&&a===r?o:o=e(n=i,r=a)}}(t,r)).on("end.style."+t,to(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,o,i;return function(){var a=ye(this,t),s=n(this),u=s+"";return null==s&&(this.style.removeProperty(t),u=s=ye(this,t)),a===u?null:a===r&&u===o?i:(o=u,i=e(r=a,s))}}(t,r,Lr(this,"style."+t,e))).each(function(t,e){var n,r,o,i,a="style."+e,s="end."+a;return function(){var u=jr(this,t),c=u.on,l=null==u.value[a]?i||(i=to(e)):void 0;c===n&&o===l||(r=(n=c).copy()).on(s,o=l),u.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,o,i=n+"";return function(){var a=ye(this,t);return a===i?null:a===r?o:o=e(r=a,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,function(t,e,n){var r,o;function i(){var i=e.apply(this,arguments);return i!==o&&(r=(o=i)&&function(t,e,n){return function(r){this.style.setProperty(t,e(r),n)}}(t,i,n)),r}return i._value=e,i}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Lr(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,o=zr(this.node(),n).tween,i=0,a=o.length;ir?(r+o)/2:Math.min(0,r)||Math.max(0,o),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}var bo=function t(e,n){if(e===n)return!0;if(e&&n&&"object"==typeof e&&"object"==typeof n){if(e.constructor!==n.constructor)return!1;var r,o,i;if(Array.isArray(e)){if((r=e.length)!=n.length)return!1;for(o=r;0!=o--;)if(!t(e[o],n[o]))return!1;return!0}if(e.constructor===RegExp)return e.source===n.source&&e.flags===n.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===n.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===n.toString();if((r=(i=Object.keys(e)).length)!==Object.keys(n).length)return!1;for(o=r;0!=o--;)if(!Object.prototype.hasOwnProperty.call(n,i[o]))return!1;for(o=r;0!=o--;){var a=i[o];if(!t(e[a],n[a]))return!1}return!0}return e!=e&&n!=n},_o={setOnConnect:St((function(t,e){t.onConnect=e})),setNodes:St((function(t,e){t.nodes=e})),setEdges:St((function(t,e){t.edges=e})),updateNodeData:St((function(t,e){var n=e.id,r=zt(e,["id"]);t.nodes.forEach((function(t){t.id===n&&(t.__rg=jt({},t.__rg,{},r))}))})),updateNodePos:St((function(t,e){var n=e.id,r=e.pos;t.nodes.forEach((function(t){t.id===n&&(t.__rg=jt({},t.__rg,{position:r}))}))})),setSelection:St((function(t,e){t.selectionActive=e})),setNodesSelection:St((function(t,e){var n=e.isActive,r=e.selection;if(!n)return t.nodesSelectionActive=!1,void(t.selectedElements=[]);var o=To(t.nodes,r,t.transform),i=Ao(o);t.selection=r,t.nodesSelectionActive=!0,t.selectedNodesBbox=i,t.nodesSelectionActive=!0})),setSelectedElements:St((function(t,e){var n=Array.isArray(e)?e:[e],r=!bo(n,t.selectedElements)?n:t.selectedElements;t.selectedElements=r})),updateSelection:St((function(t,e){var n=To(t.nodes,e,t.transform),r=Co(n,t.edges),o=[].concat(Rt(n),Rt(r)),i=!bo(o,t.selectedElements);t.selection=e,t.selectedElements=i?o:t.selectedElements})),updateTransform:St((function(t,e){t.transform=[e.x,e.y,e.k]})),updateSize:St((function(t,e){t.width=e.width,t.height=e.height})),initD3:St((function(t,e){var n=e.zoom,r=e.selection;t.d3Zoom=n,t.d3Selection=r,t.d3Initialised=!0})),setConnectionPosition:St((function(t,e){t.connectionPosition=e})),setConnectionSourceId:St((function(t,e){t.connectionSourceId=e}))},xo=function(t,e){void 0===e&&(e={});var n=e,r=n.compose,o=n.devTools,i=void 0===o||o,a=n.disableImmer,s=void 0!==a&&a,u=n.enhancers,c=void 0===u?[]:u,l=n.initialState,f=void 0===l?{}:l,d=n.injections,h=n.middleware,p=void 0===h?[]:h,g=n.mockActions,m=void 0!==g&&g,y=n.name,v=void 0===y?"EasyPeasyStore":y,w=n.reducerEnhancer,b=void 0===w?function(t){return t}:w,_=function(t){return yt({},t,{easyPeasyReplaceState:St((function(t,e){return e}))})},x=_(t),E=[],S={},P=function(t){void 0===t&&(t={}),S.internals=Dt({disableImmer:s,initialState:t,injections:d,model:x,reducerEnhancer:b,references:S})};P(f);var k=[function(t){return function(e){return function(n){return S.internals.computedState.currentState=t.getState(),S.internals.computedState.isInReducer=!0,e(n)}}},it].concat(p,[function(){return function(t){return function(e){var n=t(e);if(e&&S.internals.listenerActionMap[e.type]&&S.internals.listenerActionMap[e.type].length>0){var r=S.internals.actionCreatorDict[e.type];S.internals.listenerActionMap[e.type].forEach((function(t){t({type:r?r.type:e.type,payload:e.payload,error:e.error,result:e.result})}))}return n}}}]);m&&k.push((function(){return function(){return function(t){null!=t&&E.push(t)}}}));var O=r||(i&&"undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({name:v}):et),N=Z(S.internals.reducer,S.internals.defaultState,O.apply(void 0,[nt.apply(void 0,k)].concat(c)));N.subscribe((function(){S.internals.computedState.isInReducer=!1})),S.dispatch=N.dispatch,S.getState=N.getState;var D=function(){Object.keys(N.dispatch).forEach((function(t){delete N.dispatch[t]})),Object.keys(S.internals.actionCreators).forEach((function(t){N.dispatch[t]=S.internals.actionCreators[t]}))};D();var A=function(t){var e=N.getState();t&&delete e[t],P(N.getState()),N.replaceReducer(S.internals.reducer),S.internals.actionCreatorDict["@action.easyPeasyReplaceState"](S.internals.defaultState),D()};return Object.assign(N,{addModel:function(t,e){x[t]&&"production"!==process.env.NODE_ENV&&(console.warn('easy-peasy: The store model already contains a model definition for "'+t+'"'),N.removeModel(t)),x[t]=e,A()},clearMockedActions:function(){E=[]},getActions:function(){return S.internals.actionCreators},getListeners:function(){return S.internals.listenerActionCreators},getMockedActions:function(){return[].concat(E)},reconfigure:function(t){x=_(t),A()},removeModel:function(t){x[t]?(delete x[t],A(t)):"production"!==process.env.NODE_ENV&&console.warn('easy-peasy: The store model does not contain a model definition for "'+t+'"')}})}(jt({width:0,height:0,transform:[0,0,1],nodes:[],edges:[],selectedElements:[],selectedNodesBbox:{x:0,y:0,width:0,height:0},d3Zoom:null,d3Selection:null,d3Initialised:!1,nodesSelectionActive:!1,selectionActive:!1,selection:{},connectionSourceId:null,connectionPosition:{x:0,y:0},onConnect:function(){}},_o)),Eo=function(t){return void 0!==t},So=function(t){return t&&t.target&&["INPUT","SELECT","TEXTAREA"].includes(t.target.nodeName)},Po=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{width:t.offsetWidth,height:t.offsetHeight}},ko=function(t){return t.source&&t.target},Oo=function(t){return!t.source&&!t.target};var No=function(t,e){var n=t.x,r=t.y;return{x:(n-e[0])*(1/[e[2]]),y:(r-e[1])*(1/[e[2]])}},Do=function(t,e){if(!t.id)throw new Error("All elements (nodes and edges) need to have an id.");return ko(t)?jt({},t,{id:t.id.toString(),type:t.type||"default"}):jt({},t,{id:t.id.toString(),type:t.type||"default",__rg:{position:No(t.position,e),width:null,height:null,handleBounds:{}}})},Ao=function(t){var e=t.reduce((function(t,e){var n=e.__rg.position,r=n.x+e.__rg.width,o=n.y+e.__rg.height;return n.xt.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}},To=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[0,0,1],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return t.filter((function(t){var o=(e.x-n[0])*(1/n[2]),i=(e.y-n[1])*(1/n[2]),a=e.width*(1/n[2]),s=e.height*(1/n[2]),u=t.__rg,c=u.position,l=u.width,f=u.height,d=r?-l:l,h=r?0:f,p=r?l:0,g=r?f:0;return c.x+p>o&&c.x+di&&c.y+h0&&void 0!==arguments[0]?arguments[0]:{},e=t.padding,n=void 0===e?0:e,r=xo.getState(),o=Ao(r.nodes),i=Math.max(o.width,o.height),a=Math.min(r.width,r.height)/(i+i*n),s=o.x+o.width/2,u=o.y+o.height/2,c=[r.width/2-s*a,r.height/2-u*a],l=lo.translate(c[0],c[1]).scale(a);r.d3Selection.call(r.d3Zoom.transform,l)},jo=function(){var t=xo.getState();t.d3Zoom.scaleTo(t.d3Selection,t.transform[2]+.2)},zo=function(){var t=xo.getState();t.d3Zoom.scaleTo(t.d3Selection,t.transform[2]-.2)};var Io=e.memo((function(t){var e=gt((function(t){return{nodes:t.nodes,transform:t.transform,selectedElements:t.selectedElements}})),n=e.transform,r=e.nodes,o={transform:"translate(".concat(n[0],"px,").concat(n[1],"px) scale(").concat(n[2],")")};return i.createElement("div",{className:"react-flow__nodes",style:o},r.map((function(n){return function(t,e,n){var r=t.type||"default";e.nodeTypes[r]||console.warn('No node type found for type "'.concat(r,'". Using fallback type "default".'));var o=e.nodeTypes[r]||e.nodeTypes.default,a=n.selectedElements.filter(Oo).map((function(t){return t.id})).includes(t.id);return i.createElement(o,{key:t.id,id:t.id,type:t.type,data:t.data,xPos:t.__rg.position.x,yPos:t.__rg.position.y,onClick:e.onElementClick,onNodeDragStop:e.onNodeDragStop,transform:n.transform,selected:a,style:t.style})}(n,t,e)})))}));function Ro(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function Xo(t,e){return t(e={exports:{}},e.exports),e.exports}Io.displayName="NodeRenderer",Io.whyDidYouRender=!1;var Lo=Xo((function(t){ /*! Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){var e={}.hasOwnProperty;function n(){for(var t=[],r=0;r2&&void 0!==arguments[2]?arguments[2]:null;if(!n)switch(t){case"top":return{x:e.__rg.width/2,y:0};case"right":return{x:e.__rg.width,y:e.__rg.height/2};case"bottom":return{x:e.__rg.width/2,y:e.__rg.height};case"left":return{x:0,y:e.__rg.height/2}}switch(t){case"top":return{x:n.x+n.width/2,y:n.y};case"right":return{x:n.x+n.width,y:n.y+n.height/2};case"bottom":return{x:n.x+n.width/2,y:n.y+n.height};case"left":return{x:n.x,y:n.y+n.height/2}}}function Bo(t,e){var n=null;return t?(1!==t.length&&e?e&&(n=t.find((function(t){return t.id===e}))):n=t[0],n):null}function Ho(t,e,n){var r=t.type||"default",o=t.source.includes("__"),a=t.target.includes("__"),s=o?t.source.split("__")[0]:t.source,u=a?t.target.split("__")[0]:t.target,c=o?t.source.split("__")[1]:null,l=a?t.target.split("__")[1]:null,f=n.nodes.find((function(t){return t.id===s})),d=n.nodes.find((function(t){return t.id===u}));if(!f)throw new Error("couldn't create edge for source id: ".concat(s));if(!d)throw new Error("couldn't create edge for target id: ".concat(u));var h=e.edgeTypes[r]||e.edgeTypes.default,p=Bo(f.__rg.handleBounds.source,c),g=Bo(d.__rg.handleBounds.target,l),m=p?p.position:"bottom",y=g?g.position:"top",v=function(t){var e=t.sourceNode,n=t.sourceHandle,r=t.sourcePosition,o=t.targetNode,i=t.targetHandle,a=t.targetPosition,s=Vo(r,e,n),u=e.__rg.position.x+s.x,c=e.__rg.position.y+s.y,l=Vo(a,o,i);return{sourceX:u,sourceY:c,targetX:o.__rg.position.x+l.x,targetY:o.__rg.position.y+l.y}}({sourceNode:f,sourceHandle:p,sourcePosition:m,targetNode:d,targetHandle:g,targetPosition:y}),w=v.sourceX,b=v.sourceY,_=v.targetX,x=v.targetY,E=n.selectedElements.filter(ko).find((function(t){return t.source===s&&t.target===u}));return i.createElement(h,{key:t.id,id:t.id,type:t.type,onClick:e.onElementClick,selected:E,animated:t.animated,style:t.style,source:s,target:u,sourceHandleId:c,targetHandleId:l,sourceX:w,sourceY:b,targetX:_,targetY:x,sourcePosition:m,targetPosition:y})}var Uo=e.memo((function(t){var e=gt((function(t){return{nodes:t.nodes,edges:t.edges,transform:t.transform,selectedElements:t.selectedElements,connectionSourceId:t.connectionSourceId,position:t.connectionPosition}})),n=t.width,r=t.height,o=t.connectionLineStyle,a=t.connectionLineType;if(!n)return null;var s=e.transform,u=e.edges,c=e.nodes,l=e.connectionSourceId,f=e.position,d="translate(".concat(s[0],",").concat(s[1],") scale(").concat(s[2],")");return i.createElement("svg",{width:n,height:r,className:"react-flow__edges"},i.createElement("g",{transform:d},u.map((function(n){return Ho(n,t,e)})),l&&i.createElement(Yo,{nodes:c,connectionSourceId:l,connectionPositionX:f.x,connectionPositionY:f.y,transform:s,connectionLineStyle:o,connectionLineType:a})))}));Uo.displayName="EdgeRenderer";var qo={position:"absolute",top:0,left:0},Fo=e.memo((function(t){var e=t.gap,n=t.strokeColor,r=t.strokeWidth,o=t.style,a=t.className,s=gt((function(t){return t})),u=s.width,c=s.height,l=It(s.transform,3),f=l[0],d=l[1],h=l[2],p=Lo("react-flow__grid",a),g=e*h,m=f%g,y=d%g,v=Math.ceil(u/g)+1,w=Math.ceil(c/g)+1,b=Array.from({length:v},(function(t,e){return"M".concat(e*g+m," 0 V").concat(c)})),_=Array.from({length:w},(function(t,e){return"M0 ".concat(e*g+y," H").concat(u)})),x=[].concat(Rt(b),Rt(_)).join(" ");return i.createElement("svg",{width:u,height:c,style:jt({},qo,{},o),className:p},i.createElement("path",{fill:"none",stroke:n,strokeWidth:r,d:x}))}));Fo.displayName="Grid",Fo.propTypes={gap:n.number,strokeColor:n.string,strokeWidth:n.number,style:n.object,className:n.string},Fo.defaultProps={gap:24,strokeColor:"#999",strokeWidth:.1,style:{},className:null};var $o={grid:Fo},Go=e.memo((function(t){var e=t.backgroundType,n=zt(t,["backgroundType"]),r=$o[e];return i.createElement(r,n)}));Go.displayName="BackgroundRenderer",Go.propTypes={backgroundType:n.oneOf(["grid"])},Go.defaultProps={backgroundType:"grid"};var Wo={startX:0,startY:0,x:0,y:0,width:0,height:0,draw:!1};function Ko(t){var e=document.querySelector(".react-flow").getBoundingClientRect();return{x:t.clientX-e.left,y:t.clientY-e.top}}var Zo=e.memo((function(){var t=e.useRef(null),n=It(e.useState(Wo),2),r=n[0],o=n[1],a=mt((function(t){return t.setSelection})),s=mt((function(t){return t.updateSelection})),u=mt((function(t){return t.setNodesSelection}));return e.useEffect((function(){function e(t){var e=Ko(t);o((function(t){return jt({},t,{startX:e.x,startY:e.y,x:e.x,y:e.y,draw:!0})})),a(!0)}function n(t){o((function(e){if(!e.draw)return e;var n=Ko(t),r=n.xe===t.identifier)||t.changedTouches&&(0,Jo.findInArray)(t.changedTouches,t=>e===t.identifier)},e.getTouchIdentifier=function(t){if(t.targetTouches&&t.targetTouches[0])return t.targetTouches[0].identifier;if(t.changedTouches&&t.changedTouches[0])return t.changedTouches[0].identifier},e.addUserSelectStyles=function(t){if(!t)return;let e=t.getElementById("react-draggable-style-el");e||((e=t.createElement("style")).type="text/css",e.id="react-draggable-style-el",e.innerHTML=".react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n",e.innerHTML+=".react-draggable-transparent-selection *::selection {all: inherit;}\n",t.getElementsByTagName("head")[0].appendChild(e));t.body&&a(t.body,"react-draggable-transparent-selection")},e.removeUserSelectStyles=function(t){try{t&&t.body&&s(t.body,"react-draggable-transparent-selection"),t.selection?t.selection.empty():window.getSelection().removeAllRanges()}catch(t){}},e.styleHacks=function(t={}){return{touchAction:"none",...t}},e.addClassName=a,e.removeClassName=s;var n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};r.get||r.set?Object.defineProperty(e,n,r):e[n]=t[n]}return e.default=t,e}(Qo);let r="";function o(t,e){return r||(r=(0,Jo.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],(function(e){return(0,Jo.isFunction)(t[e])}))),!!(0,Jo.isFunction)(t[r])&&t[r](e)}function i({x:t,y:e},n,r){let o=`translate(${t}${r},${e}${r})`;if(n){o=`translate(${`${"string"==typeof n.x?n.x:n.x+r}`}, ${`${"string"==typeof n.y?n.y:n.y+r}`})`+o}return o}function a(t,e){t.classList?t.classList.add(e):t.className.match(new RegExp(`(?:^|\\s)${e}(?!\\S)`))||(t.className+=` ${e}`)}function s(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(new RegExp(`(?:^|\\s)${e}(?!\\S)`,"g"),"")}}));Ro(ti);ti.matchesSelector,ti.matchesSelectorAndParentsTo,ti.addEvent,ti.removeEvent,ti.outerHeight,ti.outerWidth,ti.innerHeight,ti.innerWidth,ti.offsetXYFromParent,ti.createCSSTransform,ti.createSVGTransform,ti.getTranslation,ti.getTouch,ti.getTouchIdentifier,ti.addUserSelectStyles,ti.removeUserSelectStyles,ti.styleHacks,ti.addClassName,ti.removeClassName;var ei=Xo((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.getBoundPosition=function(t,e,n){if(!t.props.bounds)return[e,n];let{bounds:r}=t.props;r="string"==typeof r?r:function(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}(r);const i=o(t);if("string"==typeof r){const{ownerDocument:t}=i,e=t.defaultView;let n;if(!((n="parent"===r?i.parentNode:t.querySelector(r))instanceof e.HTMLElement))throw new Error('Bounds selector "'+r+'" could not find an element.');const o=e.getComputedStyle(i),a=e.getComputedStyle(n);r={left:-i.offsetLeft+(0,Jo.int)(a.paddingLeft)+(0,Jo.int)(o.marginLeft),top:-i.offsetTop+(0,Jo.int)(a.paddingTop)+(0,Jo.int)(o.marginTop),right:(0,ti.innerWidth)(n)-(0,ti.outerWidth)(i)-i.offsetLeft+(0,Jo.int)(a.paddingRight)-(0,Jo.int)(o.marginRight),bottom:(0,ti.innerHeight)(n)-(0,ti.outerHeight)(i)-i.offsetTop+(0,Jo.int)(a.paddingBottom)-(0,Jo.int)(o.marginBottom)}}(0,Jo.isNum)(r.right)&&(e=Math.min(e,r.right));(0,Jo.isNum)(r.bottom)&&(n=Math.min(n,r.bottom));(0,Jo.isNum)(r.left)&&(e=Math.max(e,r.left));(0,Jo.isNum)(r.top)&&(n=Math.max(n,r.top));return[e,n]},e.snapToGrid=function(t,e,n){const r=Math.round(e/t[0])*t[0],o=Math.round(n/t[1])*t[1];return[r,o]},e.canDragX=function(t){return"both"===t.props.axis||"x"===t.props.axis},e.canDragY=function(t){return"both"===t.props.axis||"y"===t.props.axis},e.getControlPosition=function(t,e,n){const r="number"==typeof e?(0,ti.getTouch)(t,e):null;if("number"==typeof e&&!r)return null;const i=o(n),a=n.props.offsetParent||i.offsetParent||i.ownerDocument.body;return(0,ti.offsetXYFromParent)(r||t,a)},e.createCoreData=function(t,e,n){const r=t.state,i=!(0,Jo.isNum)(r.lastX),a=o(t);return i?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}},e.createDraggableData=function(t,e){const n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}};var n=function(t){return t&&t.__esModule?t:{default:t}}(r);function o(t){const e=n.default.findDOMNode(t);if(!e)throw new Error(": Unmounted during event!");return e}}));Ro(ei);ei.getBoundPosition,ei.snapToGrid,ei.canDragX,ei.canDragY,ei.getControlPosition,ei.createCoreData,ei.createDraggableData;var ni=Xo((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(...t){process.env.DRAGGABLE_DEBUG&&console.log(...t)}}));Ro(ni);var ri=Xo((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=c(i),a=c(n),s=c(r),u=c(ni);function c(t){return t&&t.__esModule?t:{default:t}}function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}const f={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let d=f.mouse;class h extends o.default.Component{constructor(...t){super(...t),l(this,"state",{dragging:!1,lastX:NaN,lastY:NaN,touchIdentifier:null}),l(this,"handleDragStart",t=>{if(this.props.onMouseDown(t),!this.props.allowAnyClick&&"number"==typeof t.button&&0!==t.button)return!1;const e=s.default.findDOMNode(this);if(!e||!e.ownerDocument||!e.ownerDocument.body)throw new Error(" not mounted on DragStart!");const{ownerDocument:n}=e;if(this.props.disabled||!(t.target instanceof n.defaultView.Node)||this.props.handle&&!(0,ti.matchesSelectorAndParentsTo)(t.target,this.props.handle,e)||this.props.cancel&&(0,ti.matchesSelectorAndParentsTo)(t.target,this.props.cancel,e))return;const r=(0,ti.getTouchIdentifier)(t);this.setState({touchIdentifier:r});const o=(0,ei.getControlPosition)(t,r,this);if(null==o)return;const{x:i,y:a}=o,c=(0,ei.createCoreData)(this,i,a);(0,u.default)("DraggableCore: handleDragStart: %j",c),(0,u.default)("calling",this.props.onStart),!1!==this.props.onStart(t,c)&&(this.props.enableUserSelectHack&&(0,ti.addUserSelectStyles)(n),this.setState({dragging:!0,lastX:i,lastY:a}),(0,ti.addEvent)(n,d.move,this.handleDrag),(0,ti.addEvent)(n,d.stop,this.handleDragStop))}),l(this,"handleDrag",t=>{"touchmove"===t.type&&t.preventDefault();const e=(0,ei.getControlPosition)(t,this.state.touchIdentifier,this);if(null==e)return;let{x:n,y:r}=e;if(Array.isArray(this.props.grid)){let t=n-this.state.lastX,e=r-this.state.lastY;if([t,e]=(0,ei.snapToGrid)(this.props.grid,t,e),!t&&!e)return;n=this.state.lastX+t,r=this.state.lastY+e}const o=(0,ei.createCoreData)(this,n,r);if((0,u.default)("DraggableCore: handleDrag: %j",o),!1!==this.props.onDrag(t,o))this.setState({lastX:n,lastY:r});else try{this.handleDragStop(new MouseEvent("mouseup"))}catch(t){const e=document.createEvent("MouseEvents");e.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(e)}}),l(this,"handleDragStop",t=>{if(!this.state.dragging)return;const e=(0,ei.getControlPosition)(t,this.state.touchIdentifier,this);if(null==e)return;const{x:n,y:r}=e,o=(0,ei.createCoreData)(this,n,r),i=s.default.findDOMNode(this);i&&this.props.enableUserSelectHack&&(0,ti.removeUserSelectStyles)(i.ownerDocument),(0,u.default)("DraggableCore: handleDragStop: %j",o),this.setState({dragging:!1,lastX:NaN,lastY:NaN}),this.props.onStop(t,o),i&&((0,u.default)("DraggableCore: Removing handlers"),(0,ti.removeEvent)(i.ownerDocument,d.move,this.handleDrag),(0,ti.removeEvent)(i.ownerDocument,d.stop,this.handleDragStop))}),l(this,"onMouseDown",t=>(d=f.mouse,this.handleDragStart(t))),l(this,"onMouseUp",t=>(d=f.mouse,this.handleDragStop(t))),l(this,"onTouchStart",t=>(d=f.touch,this.handleDragStart(t))),l(this,"onTouchEnd",t=>(d=f.touch,this.handleDragStop(t)))}componentWillUnmount(){const t=s.default.findDOMNode(this);if(t){const{ownerDocument:e}=t;(0,ti.removeEvent)(e,f.mouse.move,this.handleDrag),(0,ti.removeEvent)(e,f.touch.move,this.handleDrag),(0,ti.removeEvent)(e,f.mouse.stop,this.handleDragStop),(0,ti.removeEvent)(e,f.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&(0,ti.removeUserSelectStyles)(e)}}render(){return o.default.cloneElement(o.default.Children.only(this.props.children),{style:(0,ti.styleHacks)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}e.default=h,l(h,"displayName","DraggableCore"),l(h,"propTypes",{allowAnyClick:a.default.bool,disabled:a.default.bool,enableUserSelectHack:a.default.bool,offsetParent:function(t,e){if(t[e]&&1!==t[e].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:a.default.arrayOf(a.default.number),handle:a.default.string,cancel:a.default.string,onStart:a.default.func,onDrag:a.default.func,onStop:a.default.func,onMouseDown:a.default.func,className:Jo.dontSetMe,style:Jo.dontSetMe,transform:Jo.dontSetMe}),l(h,"defaultProps",{allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}})}));Ro(ri);var oi=Xo((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=f(i),a=f(n),s=f(r),u=f(Lo),c=f(ri),l=f(ni);function f(t){return t&&t.__esModule?t:{default:t}}function d(){return(d=Object.assign||function(t){for(var e=1;e{if((0,l.default)("Draggable: onDragStart: %j",e),!1===this.props.onStart(t,(0,ei.createDraggableData)(this,e)))return!1;this.setState({dragging:!0,dragged:!0})}),h(this,"onDrag",(t,e)=>{if(!this.state.dragging)return!1;(0,l.default)("Draggable: onDrag: %j",e);const n=(0,ei.createDraggableData)(this,e),r={x:n.x,y:n.y};if(this.props.bounds){const{x:t,y:e}=r;r.x+=this.state.slackX,r.y+=this.state.slackY;const[o,i]=(0,ei.getBoundPosition)(this,r.x,r.y);r.x=o,r.y=i,r.slackX=this.state.slackX+(t-r.x),r.slackY=this.state.slackY+(e-r.y),n.x=r.x,n.y=r.y,n.deltaX=r.x-this.state.x,n.deltaY=r.y-this.state.y}if(!1===this.props.onDrag(t,n))return!1;this.setState(r)}),h(this,"onDragStop",(t,e)=>{if(!this.state.dragging)return!1;if(!1===this.props.onStop(t,(0,ei.createDraggableData)(this,e)))return!1;(0,l.default)("Draggable: onDragStop: %j",e);const n={dragging:!1,slackX:0,slackY:0};if(Boolean(this.props.position)){const{x:t,y:e}=this.props.position;n.x=t,n.y=e}this.setState(n)}),this.state={dragging:!1,dragged:!1,x:t.position?t.position.x:t.defaultPosition.x,y:t.position?t.position.y:t.defaultPosition.y,prevPropsPosition:{...t.position},slackX:0,slackY:0,isElementSVG:!1},!t.position||t.onDrag||t.onStop||console.warn("A `position` was applied to this , 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.")}componentDidMount(){void 0!==window.SVGElement&&s.default.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.setState({dragging:!1})}render(){const{axis:t,bounds:e,children:n,defaultPosition:r,defaultClassName:i,defaultClassNameDragging:a,defaultClassNameDragged:s,position:l,positionOffset:f,scale:h,...p}=this.props;let g={},m=null;const y=!Boolean(l)||this.state.dragging,v=l||r,w={x:(0,ei.canDragX)(this)&&y?this.state.x:v.x,y:(0,ei.canDragY)(this)&&y?this.state.y:v.y};this.state.isElementSVG?m=(0,ti.createSVGTransform)(w,f):g=(0,ti.createCSSTransform)(w,f);const b=(0,u.default)(n.props.className||"",i,{[a]:this.state.dragging,[s]:this.state.dragged});return o.default.createElement(c.default,d({},p,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.default.cloneElement(o.default.Children.only(n),{className:b,style:{...n.props.style,...g},transform:m}))}}e.default=p,h(p,"displayName","Draggable"),h(p,"propTypes",{...c.default.propTypes,axis:a.default.oneOf(["both","x","y","none"]),bounds:a.default.oneOfType([a.default.shape({left:a.default.number,right:a.default.number,top:a.default.number,bottom:a.default.number}),a.default.string,a.default.oneOf([!1])]),defaultClassName:a.default.string,defaultClassNameDragging:a.default.string,defaultClassNameDragged:a.default.string,defaultPosition:a.default.shape({x:a.default.number,y:a.default.number}),positionOffset:a.default.shape({x:a.default.oneOfType([a.default.number,a.default.string]),y:a.default.oneOfType([a.default.number,a.default.string])}),position:a.default.shape({x:a.default.number,y:a.default.number}),className:Jo.dontSetMe,style:Jo.dontSetMe,transform:Jo.dontSetMe}),h(p,"defaultProps",{...c.default.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})}));Ro(oi);var ii=oi.default,ai=ii,si=ii,ui=ri.default;ai.default=si,ai.DraggableCore=ui;var ci=e.memo((function(){var t=It(e.useState({x:0,y:0}),2),n=t[0],r=t[1],o=It(e.useState({}),2),a=o[0],s=o[1],u=gt((function(t){return{transform:t.transform,selectedNodesBbox:t.selectedNodesBbox,selectedElements:t.selectedElements}})),c=mt((function(t){return t.updateNodePos})),l=It(u.transform,3),f=l[0],d=l[1],h=l[2],p=u.selectedNodesBbox;return i.createElement("div",{className:"react-flow__nodesselection",style:{transform:"translate(".concat(f,"px,").concat(d,"px) scale(").concat(h,")")}},i.createElement(ai,{scale:h,onStart:function(t){var e=t.clientX*(1/h),n=t.clientY*(1/h),o=e-p.x-f,i=n-p.y-d,a=u.selectedElements.filter(No).reduce((function(t,e){var n={x:e.__rg.position.x||e.position.x,y:e.__rg.position.y||e.position.x};return t[e.id]=n,t}),{});r({x:o,y:i}),s(a)},onDrag:function(t){var e=t.clientX*(1/h),r=t.clientY*(1/h);u.selectedElements.filter(No).forEach((function(t){c({id:t.id,pos:{x:a[t.id].x+e-p.x-n.x-f,y:a[t.id].y+r-p.y-n.y-d}})}))}},i.createElement("div",{className:"react-flow__nodesselection-rect",style:{width:u.selectedNodesBbox.width,height:u.selectedNodesBbox.height,top:u.selectedNodesBbox.y,left:u.selectedNodesBbox.x}})))}));function li(t){var n=It(e.useState(!1),2),r=n[0],o=n[1];function i(e){e.keyCode!==t||So(e.target)||o(!0)}var a=function(e){e.keyCode!==t||So(e.target)||o(!1)};return e.useEffect((function(){return window.addEventListener("keydown",i),window.addEventListener("keyup",a),function(){window.removeEventListener("keydown",i),window.removeEventListener("keyup",a)}}),[]),r}var fi=function(){var t,e,n=po,r=go,o=wo,i=yo,a=vo,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],c=250,l=rr,f=Lt("start","zoom","end"),d=500,h=150,p=0;function g(t){t.property("__zoom",mo).on("wheel.zoom",x).on("mousedown.zoom",E).on("dblclick.zoom",S).filter(a).on("touchstart.zoom",P).on("touchmove.zoom",k).on("touchend.zoom touchcancel.zoom",N).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function m(t,e){return(e=Math.max(s[0],Math.min(s[1],e)))===t.k?t:new co(e,t.x,t.y)}function y(t,e,n){var r=e[0]-n[0]*t.k,o=e[1]-n[1]*t.k;return r===t.x&&o===t.y?t:new co(t.k,r,o)}function v(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function w(t,e,n){t.on("start.zoom",(function(){b(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){b(this,arguments).end()})).tween("zoom",(function(){var t=this,o=arguments,i=b(t,o),a=r.apply(t,o),s=null==n?v(a):"function"==typeof n?n.apply(t,o):n,u=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),c=t.__zoom,f="function"==typeof e?e.apply(t,o):e,d=l(c.invert(s).concat(u/c.k),f.invert(s).concat(u/f.k));return function(t){if(1===t)t=f;else{var e=d(t),n=u/e[2];t=new co(n,s[0]-e[0]*n,s[1]-e[1]*n)}i.zoom(null,t)}}))}function b(t,e,n){return!n&&t.__zooming||new _(t,e)}function _(t,e){this.that=t,this.args=e,this.active=0,this.extent=r.apply(t,e),this.taps=0}function x(){if(n.apply(this,arguments)){var t=b(this,arguments),e=this.__zoom,r=Math.max(s[0],Math.min(s[1],e.k*Math.pow(2,i.apply(this,arguments)))),a=nn(this);if(t.wheel)t.mouse[0][0]===a[0]&&t.mouse[0][1]===a[1]||(t.mouse[1]=e.invert(t.mouse[0]=a)),clearTimeout(t.wheel);else{if(e.k===r)return;t.mouse=[a,e.invert(a)],Ir(this),t.start()}ho(),t.wheel=setTimeout((function(){t.wheel=null,t.end()}),h),t.zoom("mouse",o(y(m(e,r),t.mouse[0],t.mouse[1]),t.extent,u))}}function E(){if(!e&&n.apply(this,arguments)){var t=b(this,arguments,!0),r=Qe(Be.view).on("mousemove.zoom",(function(){if(ho(),!t.moved){var e=Be.clientX-a,n=Be.clientY-s;t.moved=e*e+n*n>p}t.zoom("mouse",o(y(t.that.__zoom,t.mouse[0]=nn(t.that),t.mouse[1]),t.extent,u))}),!0).on("mouseup.zoom",(function(){r.on("mousemove.zoom mouseup.zoom",null),function(t,e){var n=t.document.documentElement,r=Qe(t).on("dragstart.drag",null);e&&(r.on("click.drag",on,!0),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}(Be.view,t.moved),ho(),t.end()}),!0),i=nn(this),a=Be.clientX,s=Be.clientY;!function(t){var e=t.document.documentElement,n=Qe(t).on("dragstart.drag",on,!0);"onselectstart"in e?n.on("selectstart.drag",on,!0):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}(Be.view),fo(),t.mouse=[i,this.__zoom.invert(i)],Ir(this),t.start()}}function S(){if(n.apply(this,arguments)){var t=this.__zoom,e=nn(this),i=t.invert(e),a=t.k*(Be.shiftKey?.5:2),s=o(y(m(t,a),e,i),r.apply(this,arguments),u);ho(),c>0?Qe(this).transition().duration(c).call(w,s,e):Qe(this).call(g.transform,s)}}function P(){if(n.apply(this,arguments)){var e,r,o,i,a=Be.touches,s=a.length,u=b(this,arguments,Be.changedTouches.length===s);for(fo(),r=0;r'})),i.createElement("div",{className:"react-flow__controls-button react-flow__controls-zoomout",onClick:zo},i.createElement("img",{src:''})),i.createElement("div",{className:"react-flow__controls-button react-flow__controls-fitview",onClick:Mo},i.createElement("img",{src:''})))},t.Handle=mi,t.MiniMap=function(t){var n=t.style,r=void 0===n?{}:n,o=t.className,a=t.bgColor,s=void 0===a?"#f8f8f8":a,u=t.nodeColor,c=void 0===u?"#ddd":u,l=e.useRef(null),f=gt((function(t){return{width:t.width,height:t.height,nodes:t.nodes,transform:t.transform}})),d=Lo("react-flow__minimap",o),h=f.nodes.map((function(t){return t.__rg.position})),p=r.width||Ai.width,g=f.height/(f.width||1)*p,m={x:0,y:0,width:f.width,height:f.height},y=p/f.width,v=function(t){return!!(t&&t.constructor&&t.call&&t.apply)}(c)?c:function(){return c};return e.useEffect((function(){if(l){var t=l.current.getContext("2d"),e=Ao(f.nodes,m,f.transform,!0);t.fillStyle=s,t.fillRect(0,0,p,g),e.forEach((function(e){var n=e.__rg.position,r=f.transform[0],o=f.transform[1],i=n.x*f.transform[2]+r,a=n.y*f.transform[2]+o;t.fillStyle=v(e),t.fillRect(i*y,a*y,e.__rg.width*y*f.transform[2],e.__rg.height*y*f.transform[2])}))}}),[h,f.transform,g]),i.createElement("canvas",{style:jt({},Ai,{},r,{height:g}),width:p,height:g,className:d,ref:l})},t.addEdge=function(t,e){if(!t.source||!t.target)throw new Error("Can not create edge. An edge needs a source and a target");return e.concat(jt({},t,{id:Eo(t.id)?t.id:(n=t,"reactflow__edge-".concat(n.source,"-").concat(n.target))}));var n},t.default=Ci,t.getOutgoers=function(t,e){if(!No(t))return[];var n=e.filter((function(e){return e.source===t.id})).map((function(t){return t.target}));return e.filter((function(t){return n.includes(t.id)}))},t.isEdge=ko,t.isNode=No,t.removeElements=function(t,e){var n=t.map((function(t){return t.id}));return e.filter((function(t){return!n.includes(t.id)&&!n.includes(t.target)&&!n.includes(t.source)}))},Object.defineProperty(t,"__esModule",{value:!0})})); +!function(){var e={}.hasOwnProperty;function n(){for(var t=[],r=0;r2&&void 0!==arguments[2]?arguments[2]:null;if(!n)switch(t){case"top":return{x:e.__rg.width/2,y:0};case"right":return{x:e.__rg.width,y:e.__rg.height/2};case"bottom":return{x:e.__rg.width/2,y:e.__rg.height};case"left":return{x:0,y:e.__rg.height/2}}switch(t){case"top":return{x:n.x+n.width/2,y:n.y};case"right":return{x:n.x+n.width,y:n.y+n.height/2};case"bottom":return{x:n.x+n.width/2,y:n.y+n.height};case"left":return{x:n.x,y:n.y+n.height/2}}}function Vo(t,e){var n=null;return t?(1!==t.length&&e?e&&(n=t.find((function(t){return t.id===e}))):n=t[0],n):null}function Ho(t,e,n){var r=t.type||"default",o=t.source.includes("__"),a=t.target.includes("__"),s=o?t.source.split("__")[0]:t.source,u=a?t.target.split("__")[0]:t.target,c=o?t.source.split("__")[1]:null,l=a?t.target.split("__")[1]:null,f=n.nodes.find((function(t){return t.id===s})),d=n.nodes.find((function(t){return t.id===u}));if(!f)throw new Error("couldn't create edge for source id: ".concat(s));if(!d)throw new Error("couldn't create edge for target id: ".concat(u));var h=e.edgeTypes[r]||e.edgeTypes.default,p=Vo(f.__rg.handleBounds.source,c),g=Vo(d.__rg.handleBounds.target,l),m=p?p.position:"bottom",y=g?g.position:"top",v=function(t){var e=t.sourceNode,n=t.sourceHandle,r=t.sourcePosition,o=t.targetNode,i=t.targetHandle,a=t.targetPosition,s=Bo(r,e,n),u=e.__rg.position.x+s.x,c=e.__rg.position.y+s.y,l=Bo(a,o,i);return{sourceX:u,sourceY:c,targetX:o.__rg.position.x+l.x,targetY:o.__rg.position.y+l.y}}({sourceNode:f,sourceHandle:p,sourcePosition:m,targetNode:d,targetHandle:g,targetPosition:y}),w=v.sourceX,b=v.sourceY,_=v.targetX,x=v.targetY,E=n.selectedElements.filter(ko).find((function(t){return t.source===s&&t.target===u}));return i.createElement(h,{key:t.id,id:t.id,type:t.type,onClick:e.onElementClick,selected:E,animated:t.animated,style:t.style,source:s,target:u,sourceHandleId:c,targetHandleId:l,sourceX:w,sourceY:b,targetX:_,targetY:x,sourcePosition:m,targetPosition:y})}var Uo=e.memo((function(t){var e=gt((function(t){return{nodes:t.nodes,edges:t.edges,transform:t.transform,selectedElements:t.selectedElements,connectionSourceId:t.connectionSourceId,position:t.connectionPosition}})),n=t.width,r=t.height,o=t.connectionLineStyle,a=t.connectionLineType;if(!n)return null;var s=e.transform,u=e.edges,c=e.nodes,l=e.connectionSourceId,f=e.position,d="translate(".concat(s[0],",").concat(s[1],") scale(").concat(s[2],")");return i.createElement("svg",{width:n,height:r,className:"react-flow__edges"},i.createElement("g",{transform:d},u.map((function(n){return Ho(n,t,e)})),l&&i.createElement(Yo,{nodes:c,connectionSourceId:l,connectionPositionX:f.x,connectionPositionY:f.y,transform:s,connectionLineStyle:o,connectionLineType:a})))}));Uo.displayName="EdgeRenderer";var qo={position:"absolute",top:0,left:0},Fo=e.memo((function(t){var e=t.gap,n=t.strokeColor,r=t.strokeWidth,o=t.style,a=t.className,s=gt((function(t){return t})),u=s.width,c=s.height,l=It(s.transform,3),f=l[0],d=l[1],h=l[2],p=Lo("react-flow__grid",a),g=e*h,m=f%g,y=d%g,v=Math.ceil(u/g)+1,w=Math.ceil(c/g)+1,b=Array.from({length:v},(function(t,e){return"M".concat(e*g+m," 0 V").concat(c)})),_=Array.from({length:w},(function(t,e){return"M0 ".concat(e*g+y," H").concat(u)})),x=[].concat(Rt(b),Rt(_)).join(" ");return i.createElement("svg",{width:u,height:c,style:jt({},qo,{},o),className:p},i.createElement("path",{fill:"none",stroke:n,strokeWidth:r,d:x}))}));Fo.displayName="Grid",Fo.propTypes={gap:n.number,strokeColor:n.string,strokeWidth:n.number,style:n.object,className:n.string},Fo.defaultProps={gap:24,strokeColor:"#999",strokeWidth:.1,style:{},className:null};var $o={grid:Fo},Go=e.memo((function(t){var e=t.backgroundType,n=zt(t,["backgroundType"]),r=$o[e];return i.createElement(r,n)}));Go.displayName="BackgroundRenderer",Go.propTypes={backgroundType:n.oneOf(["grid"])},Go.defaultProps={backgroundType:"grid"};var Wo={startX:0,startY:0,x:0,y:0,width:0,height:0,draw:!1};function Ko(t){var e=document.querySelector(".react-flow").getBoundingClientRect();return{x:t.clientX-e.left,y:t.clientY-e.top}}var Zo=e.memo((function(){var t=e.useRef(null),n=It(e.useState(Wo),2),r=n[0],o=n[1],a=mt((function(t){return t.setSelection})),s=mt((function(t){return t.updateSelection})),u=mt((function(t){return t.setNodesSelection}));return e.useEffect((function(){function e(t){var e=Ko(t);o((function(t){return jt({},t,{startX:e.x,startY:e.y,x:e.x,y:e.y,draw:!0})})),a(!0)}function n(t){o((function(e){if(!e.draw)return e;var n=Ko(t),r=n.xe===t.identifier)||t.changedTouches&&(0,Jo.findInArray)(t.changedTouches,t=>e===t.identifier)},e.getTouchIdentifier=function(t){if(t.targetTouches&&t.targetTouches[0])return t.targetTouches[0].identifier;if(t.changedTouches&&t.changedTouches[0])return t.changedTouches[0].identifier},e.addUserSelectStyles=function(t){if(!t)return;let e=t.getElementById("react-draggable-style-el");e||((e=t.createElement("style")).type="text/css",e.id="react-draggable-style-el",e.innerHTML=".react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n",e.innerHTML+=".react-draggable-transparent-selection *::selection {all: inherit;}\n",t.getElementsByTagName("head")[0].appendChild(e));t.body&&a(t.body,"react-draggable-transparent-selection")},e.removeUserSelectStyles=function(t){try{t&&t.body&&s(t.body,"react-draggable-transparent-selection"),t.selection?t.selection.empty():window.getSelection().removeAllRanges()}catch(t){}},e.styleHacks=function(t={}){return{touchAction:"none",...t}},e.addClassName=a,e.removeClassName=s;var n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};r.get||r.set?Object.defineProperty(e,n,r):e[n]=t[n]}return e.default=t,e}(Qo);let r="";function o(t,e){return r||(r=(0,Jo.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],(function(e){return(0,Jo.isFunction)(t[e])}))),!!(0,Jo.isFunction)(t[r])&&t[r](e)}function i({x:t,y:e},n,r){let o=`translate(${t}${r},${e}${r})`;if(n){o=`translate(${`${"string"==typeof n.x?n.x:n.x+r}`}, ${`${"string"==typeof n.y?n.y:n.y+r}`})`+o}return o}function a(t,e){t.classList?t.classList.add(e):t.className.match(new RegExp(`(?:^|\\s)${e}(?!\\S)`))||(t.className+=` ${e}`)}function s(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(new RegExp(`(?:^|\\s)${e}(?!\\S)`,"g"),"")}}));Ro(ti);ti.matchesSelector,ti.matchesSelectorAndParentsTo,ti.addEvent,ti.removeEvent,ti.outerHeight,ti.outerWidth,ti.innerHeight,ti.innerWidth,ti.offsetXYFromParent,ti.createCSSTransform,ti.createSVGTransform,ti.getTranslation,ti.getTouch,ti.getTouchIdentifier,ti.addUserSelectStyles,ti.removeUserSelectStyles,ti.styleHacks,ti.addClassName,ti.removeClassName;var ei=Xo((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.getBoundPosition=function(t,e,n){if(!t.props.bounds)return[e,n];let{bounds:r}=t.props;r="string"==typeof r?r:function(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}(r);const i=o(t);if("string"==typeof r){const{ownerDocument:t}=i,e=t.defaultView;let n;if(!((n="parent"===r?i.parentNode:t.querySelector(r))instanceof e.HTMLElement))throw new Error('Bounds selector "'+r+'" could not find an element.');const o=e.getComputedStyle(i),a=e.getComputedStyle(n);r={left:-i.offsetLeft+(0,Jo.int)(a.paddingLeft)+(0,Jo.int)(o.marginLeft),top:-i.offsetTop+(0,Jo.int)(a.paddingTop)+(0,Jo.int)(o.marginTop),right:(0,ti.innerWidth)(n)-(0,ti.outerWidth)(i)-i.offsetLeft+(0,Jo.int)(a.paddingRight)-(0,Jo.int)(o.marginRight),bottom:(0,ti.innerHeight)(n)-(0,ti.outerHeight)(i)-i.offsetTop+(0,Jo.int)(a.paddingBottom)-(0,Jo.int)(o.marginBottom)}}(0,Jo.isNum)(r.right)&&(e=Math.min(e,r.right));(0,Jo.isNum)(r.bottom)&&(n=Math.min(n,r.bottom));(0,Jo.isNum)(r.left)&&(e=Math.max(e,r.left));(0,Jo.isNum)(r.top)&&(n=Math.max(n,r.top));return[e,n]},e.snapToGrid=function(t,e,n){const r=Math.round(e/t[0])*t[0],o=Math.round(n/t[1])*t[1];return[r,o]},e.canDragX=function(t){return"both"===t.props.axis||"x"===t.props.axis},e.canDragY=function(t){return"both"===t.props.axis||"y"===t.props.axis},e.getControlPosition=function(t,e,n){const r="number"==typeof e?(0,ti.getTouch)(t,e):null;if("number"==typeof e&&!r)return null;const i=o(n),a=n.props.offsetParent||i.offsetParent||i.ownerDocument.body;return(0,ti.offsetXYFromParent)(r||t,a)},e.createCoreData=function(t,e,n){const r=t.state,i=!(0,Jo.isNum)(r.lastX),a=o(t);return i?{node:a,deltaX:0,deltaY:0,lastX:e,lastY:n,x:e,y:n}:{node:a,deltaX:e-r.lastX,deltaY:n-r.lastY,lastX:r.lastX,lastY:r.lastY,x:e,y:n}},e.createDraggableData=function(t,e){const n=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/n,y:t.state.y+e.deltaY/n,deltaX:e.deltaX/n,deltaY:e.deltaY/n,lastX:t.state.x,lastY:t.state.y}};var n=function(t){return t&&t.__esModule?t:{default:t}}(r);function o(t){const e=n.default.findDOMNode(t);if(!e)throw new Error(": Unmounted during event!");return e}}));Ro(ei);ei.getBoundPosition,ei.snapToGrid,ei.canDragX,ei.canDragY,ei.getControlPosition,ei.createCoreData,ei.createDraggableData;var ni=Xo((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(...t){process.env.DRAGGABLE_DEBUG&&console.log(...t)}}));Ro(ni);var ri=Xo((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=c(i),a=c(n),s=c(r),u=c(ni);function c(t){return t&&t.__esModule?t:{default:t}}function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}const f={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let d=f.mouse;class h extends o.default.Component{constructor(...t){super(...t),l(this,"state",{dragging:!1,lastX:NaN,lastY:NaN,touchIdentifier:null}),l(this,"handleDragStart",t=>{if(this.props.onMouseDown(t),!this.props.allowAnyClick&&"number"==typeof t.button&&0!==t.button)return!1;const e=s.default.findDOMNode(this);if(!e||!e.ownerDocument||!e.ownerDocument.body)throw new Error(" not mounted on DragStart!");const{ownerDocument:n}=e;if(this.props.disabled||!(t.target instanceof n.defaultView.Node)||this.props.handle&&!(0,ti.matchesSelectorAndParentsTo)(t.target,this.props.handle,e)||this.props.cancel&&(0,ti.matchesSelectorAndParentsTo)(t.target,this.props.cancel,e))return;const r=(0,ti.getTouchIdentifier)(t);this.setState({touchIdentifier:r});const o=(0,ei.getControlPosition)(t,r,this);if(null==o)return;const{x:i,y:a}=o,c=(0,ei.createCoreData)(this,i,a);(0,u.default)("DraggableCore: handleDragStart: %j",c),(0,u.default)("calling",this.props.onStart),!1!==this.props.onStart(t,c)&&(this.props.enableUserSelectHack&&(0,ti.addUserSelectStyles)(n),this.setState({dragging:!0,lastX:i,lastY:a}),(0,ti.addEvent)(n,d.move,this.handleDrag),(0,ti.addEvent)(n,d.stop,this.handleDragStop))}),l(this,"handleDrag",t=>{"touchmove"===t.type&&t.preventDefault();const e=(0,ei.getControlPosition)(t,this.state.touchIdentifier,this);if(null==e)return;let{x:n,y:r}=e;if(Array.isArray(this.props.grid)){let t=n-this.state.lastX,e=r-this.state.lastY;if([t,e]=(0,ei.snapToGrid)(this.props.grid,t,e),!t&&!e)return;n=this.state.lastX+t,r=this.state.lastY+e}const o=(0,ei.createCoreData)(this,n,r);if((0,u.default)("DraggableCore: handleDrag: %j",o),!1!==this.props.onDrag(t,o))this.setState({lastX:n,lastY:r});else try{this.handleDragStop(new MouseEvent("mouseup"))}catch(t){const e=document.createEvent("MouseEvents");e.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(e)}}),l(this,"handleDragStop",t=>{if(!this.state.dragging)return;const e=(0,ei.getControlPosition)(t,this.state.touchIdentifier,this);if(null==e)return;const{x:n,y:r}=e,o=(0,ei.createCoreData)(this,n,r),i=s.default.findDOMNode(this);i&&this.props.enableUserSelectHack&&(0,ti.removeUserSelectStyles)(i.ownerDocument),(0,u.default)("DraggableCore: handleDragStop: %j",o),this.setState({dragging:!1,lastX:NaN,lastY:NaN}),this.props.onStop(t,o),i&&((0,u.default)("DraggableCore: Removing handlers"),(0,ti.removeEvent)(i.ownerDocument,d.move,this.handleDrag),(0,ti.removeEvent)(i.ownerDocument,d.stop,this.handleDragStop))}),l(this,"onMouseDown",t=>(d=f.mouse,this.handleDragStart(t))),l(this,"onMouseUp",t=>(d=f.mouse,this.handleDragStop(t))),l(this,"onTouchStart",t=>(d=f.touch,this.handleDragStart(t))),l(this,"onTouchEnd",t=>(d=f.touch,this.handleDragStop(t)))}componentWillUnmount(){const t=s.default.findDOMNode(this);if(t){const{ownerDocument:e}=t;(0,ti.removeEvent)(e,f.mouse.move,this.handleDrag),(0,ti.removeEvent)(e,f.touch.move,this.handleDrag),(0,ti.removeEvent)(e,f.mouse.stop,this.handleDragStop),(0,ti.removeEvent)(e,f.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&(0,ti.removeUserSelectStyles)(e)}}render(){return o.default.cloneElement(o.default.Children.only(this.props.children),{style:(0,ti.styleHacks)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}e.default=h,l(h,"displayName","DraggableCore"),l(h,"propTypes",{allowAnyClick:a.default.bool,disabled:a.default.bool,enableUserSelectHack:a.default.bool,offsetParent:function(t,e){if(t[e]&&1!==t[e].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:a.default.arrayOf(a.default.number),handle:a.default.string,cancel:a.default.string,onStart:a.default.func,onDrag:a.default.func,onStop:a.default.func,onMouseDown:a.default.func,className:Jo.dontSetMe,style:Jo.dontSetMe,transform:Jo.dontSetMe}),l(h,"defaultProps",{allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}})}));Ro(ri);var oi=Xo((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=f(i),a=f(n),s=f(r),u=f(Lo),c=f(ri),l=f(ni);function f(t){return t&&t.__esModule?t:{default:t}}function d(){return(d=Object.assign||function(t){for(var e=1;e{if((0,l.default)("Draggable: onDragStart: %j",e),!1===this.props.onStart(t,(0,ei.createDraggableData)(this,e)))return!1;this.setState({dragging:!0,dragged:!0})}),h(this,"onDrag",(t,e)=>{if(!this.state.dragging)return!1;(0,l.default)("Draggable: onDrag: %j",e);const n=(0,ei.createDraggableData)(this,e),r={x:n.x,y:n.y};if(this.props.bounds){const{x:t,y:e}=r;r.x+=this.state.slackX,r.y+=this.state.slackY;const[o,i]=(0,ei.getBoundPosition)(this,r.x,r.y);r.x=o,r.y=i,r.slackX=this.state.slackX+(t-r.x),r.slackY=this.state.slackY+(e-r.y),n.x=r.x,n.y=r.y,n.deltaX=r.x-this.state.x,n.deltaY=r.y-this.state.y}if(!1===this.props.onDrag(t,n))return!1;this.setState(r)}),h(this,"onDragStop",(t,e)=>{if(!this.state.dragging)return!1;if(!1===this.props.onStop(t,(0,ei.createDraggableData)(this,e)))return!1;(0,l.default)("Draggable: onDragStop: %j",e);const n={dragging:!1,slackX:0,slackY:0};if(Boolean(this.props.position)){const{x:t,y:e}=this.props.position;n.x=t,n.y=e}this.setState(n)}),this.state={dragging:!1,dragged:!1,x:t.position?t.position.x:t.defaultPosition.x,y:t.position?t.position.y:t.defaultPosition.y,prevPropsPosition:{...t.position},slackX:0,slackY:0,isElementSVG:!1},!t.position||t.onDrag||t.onStop||console.warn("A `position` was applied to this , 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.")}componentDidMount(){void 0!==window.SVGElement&&s.default.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.setState({dragging:!1})}render(){const{axis:t,bounds:e,children:n,defaultPosition:r,defaultClassName:i,defaultClassNameDragging:a,defaultClassNameDragged:s,position:l,positionOffset:f,scale:h,...p}=this.props;let g={},m=null;const y=!Boolean(l)||this.state.dragging,v=l||r,w={x:(0,ei.canDragX)(this)&&y?this.state.x:v.x,y:(0,ei.canDragY)(this)&&y?this.state.y:v.y};this.state.isElementSVG?m=(0,ti.createSVGTransform)(w,f):g=(0,ti.createCSSTransform)(w,f);const b=(0,u.default)(n.props.className||"",i,{[a]:this.state.dragging,[s]:this.state.dragged});return o.default.createElement(c.default,d({},p,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),o.default.cloneElement(o.default.Children.only(n),{className:b,style:{...n.props.style,...g},transform:m}))}}e.default=p,h(p,"displayName","Draggable"),h(p,"propTypes",{...c.default.propTypes,axis:a.default.oneOf(["both","x","y","none"]),bounds:a.default.oneOfType([a.default.shape({left:a.default.number,right:a.default.number,top:a.default.number,bottom:a.default.number}),a.default.string,a.default.oneOf([!1])]),defaultClassName:a.default.string,defaultClassNameDragging:a.default.string,defaultClassNameDragged:a.default.string,defaultPosition:a.default.shape({x:a.default.number,y:a.default.number}),positionOffset:a.default.shape({x:a.default.oneOfType([a.default.number,a.default.string]),y:a.default.oneOfType([a.default.number,a.default.string])}),position:a.default.shape({x:a.default.number,y:a.default.number}),className:Jo.dontSetMe,style:Jo.dontSetMe,transform:Jo.dontSetMe}),h(p,"defaultProps",{...c.default.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})}));Ro(oi);var ii=oi.default,ai=ii,si=ii,ui=ri.default;ai.default=si,ai.DraggableCore=ui;var ci=e.memo((function(){var t=It(e.useState({x:0,y:0}),2),n=t[0],r=t[1],o=It(e.useState({}),2),a=o[0],s=o[1],u=gt((function(t){return{transform:t.transform,selectedNodesBbox:t.selectedNodesBbox,selectedElements:t.selectedElements}})),c=mt((function(t){return t.updateNodePos})),l=It(u.transform,3),f=l[0],d=l[1],h=l[2],p=u.selectedNodesBbox;return i.createElement("div",{className:"react-flow__nodesselection",style:{transform:"translate(".concat(f,"px,").concat(d,"px) scale(").concat(h,")")}},i.createElement(ai,{scale:h,onStart:function(t){var e=t.clientX*(1/h),n=t.clientY*(1/h),o=e-p.x-f,i=n-p.y-d,a=u.selectedElements.filter(Oo).reduce((function(t,e){var n={x:e.__rg.position.x||e.position.x,y:e.__rg.position.y||e.position.x};return t[e.id]=n,t}),{});r({x:o,y:i}),s(a)},onDrag:function(t){var e=t.clientX*(1/h),r=t.clientY*(1/h);u.selectedElements.filter(Oo).forEach((function(t){c({id:t.id,pos:{x:a[t.id].x+e-p.x-n.x-f,y:a[t.id].y+r-p.y-n.y-d}})}))}},i.createElement("div",{className:"react-flow__nodesselection-rect",style:{width:u.selectedNodesBbox.width,height:u.selectedNodesBbox.height,top:u.selectedNodesBbox.y,left:u.selectedNodesBbox.x}})))}));function li(t){var n=It(e.useState(!1),2),r=n[0],o=n[1];function i(e){e.keyCode!==t||So(e.target)||o(!0)}var a=function(e){e.keyCode!==t||So(e.target)||o(!1)};return e.useEffect((function(){return window.addEventListener("keydown",i),window.addEventListener("keyup",a),function(){window.removeEventListener("keydown",i),window.removeEventListener("keyup",a)}}),[]),r}var fi=function(){var t,e,n=po,r=go,o=wo,i=yo,a=vo,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],c=250,l=rr,f=Lt("start","zoom","end"),d=500,h=150,p=0;function g(t){t.property("__zoom",mo).on("wheel.zoom",x).on("mousedown.zoom",E).on("dblclick.zoom",S).filter(a).on("touchstart.zoom",P).on("touchmove.zoom",k).on("touchend.zoom touchcancel.zoom",O).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function m(t,e){return(e=Math.max(s[0],Math.min(s[1],e)))===t.k?t:new co(e,t.x,t.y)}function y(t,e,n){var r=e[0]-n[0]*t.k,o=e[1]-n[1]*t.k;return r===t.x&&o===t.y?t:new co(t.k,r,o)}function v(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function w(t,e,n){t.on("start.zoom",(function(){b(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){b(this,arguments).end()})).tween("zoom",(function(){var t=this,o=arguments,i=b(t,o),a=r.apply(t,o),s=null==n?v(a):"function"==typeof n?n.apply(t,o):n,u=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),c=t.__zoom,f="function"==typeof e?e.apply(t,o):e,d=l(c.invert(s).concat(u/c.k),f.invert(s).concat(u/f.k));return function(t){if(1===t)t=f;else{var e=d(t),n=u/e[2];t=new co(n,s[0]-e[0]*n,s[1]-e[1]*n)}i.zoom(null,t)}}))}function b(t,e,n){return!n&&t.__zooming||new _(t,e)}function _(t,e){this.that=t,this.args=e,this.active=0,this.extent=r.apply(t,e),this.taps=0}function x(){if(n.apply(this,arguments)){var t=b(this,arguments),e=this.__zoom,r=Math.max(s[0],Math.min(s[1],e.k*Math.pow(2,i.apply(this,arguments)))),a=nn(this);if(t.wheel)t.mouse[0][0]===a[0]&&t.mouse[0][1]===a[1]||(t.mouse[1]=e.invert(t.mouse[0]=a)),clearTimeout(t.wheel);else{if(e.k===r)return;t.mouse=[a,e.invert(a)],Ir(this),t.start()}ho(),t.wheel=setTimeout((function(){t.wheel=null,t.end()}),h),t.zoom("mouse",o(y(m(e,r),t.mouse[0],t.mouse[1]),t.extent,u))}}function E(){if(!e&&n.apply(this,arguments)){var t=b(this,arguments,!0),r=Qe(Ve.view).on("mousemove.zoom",(function(){if(ho(),!t.moved){var e=Ve.clientX-a,n=Ve.clientY-s;t.moved=e*e+n*n>p}t.zoom("mouse",o(y(t.that.__zoom,t.mouse[0]=nn(t.that),t.mouse[1]),t.extent,u))}),!0).on("mouseup.zoom",(function(){r.on("mousemove.zoom mouseup.zoom",null),function(t,e){var n=t.document.documentElement,r=Qe(t).on("dragstart.drag",null);e&&(r.on("click.drag",on,!0),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}(Ve.view,t.moved),ho(),t.end()}),!0),i=nn(this),a=Ve.clientX,s=Ve.clientY;!function(t){var e=t.document.documentElement,n=Qe(t).on("dragstart.drag",on,!0);"onselectstart"in e?n.on("selectstart.drag",on,!0):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}(Ve.view),fo(),t.mouse=[i,this.__zoom.invert(i)],Ir(this),t.start()}}function S(){if(n.apply(this,arguments)){var t=this.__zoom,e=nn(this),i=t.invert(e),a=t.k*(Ve.shiftKey?.5:2),s=o(y(m(t,a),e,i),r.apply(this,arguments),u);ho(),c>0?Qe(this).transition().duration(c).call(w,s,e):Qe(this).call(g.transform,s)}}function P(){if(n.apply(this,arguments)){var e,r,o,i,a=Ve.touches,s=a.length,u=b(this,arguments,Ve.changedTouches.length===s);for(fo(),r=0;r= 0; i--) {\n var state = drafts[i][DRAFT_STATE];\n\n if (!state.modified) {\n if (Array.isArray(state.base)) {\n if (hasArrayChanges(state)) { markChanged(state); }\n } else if (hasObjectChanges(state)) { markChanged(state); }\n }\n }\n}\n\nfunction markChangesRecursively(object) {\n if (!object || typeof object !== \"object\") { return; }\n var state = object[DRAFT_STATE];\n if (!state) { return; }\n var base = state.base;\n var draft = state.draft;\n var assigned = state.assigned;\n\n if (!Array.isArray(object)) {\n // Look for added keys.\n Object.keys(draft).forEach(function (key) {\n // The `undefined` check is a fast path for pre-existing keys.\n if (base[key] === undefined && !has(base, key)) {\n assigned[key] = true;\n markChanged(state);\n } else if (!assigned[key]) {\n // Only untouched properties trigger recursion.\n markChangesRecursively(draft[key]);\n }\n }); // Look for removed keys.\n\n Object.keys(base).forEach(function (key) {\n // The `undefined` check is a fast path for pre-existing keys.\n if (draft[key] === undefined && !has(draft, key)) {\n assigned[key] = false;\n markChanged(state);\n }\n });\n } else if (hasArrayChanges(state)) {\n markChanged(state);\n assigned.length = true;\n\n if (draft.length < base.length) {\n for (var i = draft.length; i < base.length; i++) { assigned[i] = false; }\n } else {\n for (var i$1 = base.length; i$1 < draft.length; i$1++) { assigned[i$1] = true; }\n }\n\n for (var i$2 = 0; i$2 < draft.length; i$2++) {\n // Only untouched indices trigger recursion.\n if (assigned[i$2] === undefined) { markChangesRecursively(draft[i$2]); }\n }\n }\n}\n\nfunction hasObjectChanges(state) {\n var base = state.base;\n var draft = state.draft; // Search for added keys and changed keys. Start at the back, because\n // non-numeric keys are ordered by time of definition on the object.\n\n var keys = Object.keys(draft);\n\n for (var i = keys.length - 1; i >= 0; i--) {\n var key = keys[i];\n var baseValue = base[key]; // The `undefined` check is a fast path for pre-existing keys.\n\n if (baseValue === undefined && !has(base, key)) {\n return true;\n } // Once a base key is deleted, future changes go undetected, because its\n // descriptor is erased. This branch detects any missed changes.\n else {\n var value = draft[key];\n var state$1 = value && value[DRAFT_STATE];\n\n if (state$1 ? state$1.base !== baseValue : !is(value, baseValue)) {\n return true;\n }\n }\n } // At this point, no keys were added or changed.\n // Compare key count to determine if keys were deleted.\n\n\n return keys.length !== Object.keys(base).length;\n}\n\nfunction hasArrayChanges(state) {\n var draft = state.draft;\n if (draft.length !== state.base.length) { return true; } // See #116\n // If we first shorten the length, our array interceptors will be removed.\n // If after that new items are added, result in the same original length,\n // those last items will have no intercepting property.\n // So if there is no own descriptor on the last position, we know that items were removed and added\n // N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n // the last one\n\n var descriptor = Object.getOwnPropertyDescriptor(draft, draft.length - 1); // descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\n if (descriptor && !descriptor.get) { return true; } // For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\n return false;\n}\n\nfunction createHiddenProperty(target, prop, value) {\n Object.defineProperty(target, prop, {\n value: value,\n enumerable: false,\n writable: true\n });\n}\n\nvar legacyProxy = /*#__PURE__*/Object.freeze({\n willFinalize: willFinalize,\n createProxy: createProxy\n});\n\nfunction willFinalize$1() {}\nfunction createProxy$1(base, parent) {\n var scope = parent ? parent.scope : ImmerScope.current;\n var state = {\n // Track which produce call this is associated with.\n scope: scope,\n // True for both shallow and deep changes.\n modified: false,\n // Used during finalization.\n finalized: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned: {},\n // The parent draft state.\n parent: parent,\n // The base state.\n base: base,\n // The base proxy.\n draft: null,\n // Any property proxies.\n drafts: {},\n // The base copy with any updated values.\n copy: null,\n // Called by the `produce` function.\n revoke: null\n };\n var ref = Array.isArray(base) ? // [state] is used for arrays, to make sure the proxy is array-ish and not violate invariants,\n // although state itself is an object\n Proxy.revocable([state], arrayTraps) : Proxy.revocable(state, objectTraps);\n var revoke = ref.revoke;\n var proxy = ref.proxy;\n state.draft = proxy;\n state.revoke = revoke;\n scope.drafts.push(proxy);\n return proxy;\n}\nvar objectTraps = {\n get: get$1,\n\n has: function has(target, prop) {\n return prop in source$1(target);\n },\n\n ownKeys: function ownKeys(target) {\n return Reflect.ownKeys(source$1(target));\n },\n\n set: set$1,\n deleteProperty: deleteProperty,\n getOwnPropertyDescriptor: getOwnPropertyDescriptor,\n\n defineProperty: function defineProperty() {\n throw new Error(\"Object.defineProperty() cannot be used on an Immer draft\"); // prettier-ignore\n },\n\n getPrototypeOf: function getPrototypeOf(target) {\n return Object.getPrototypeOf(target.base);\n },\n\n setPrototypeOf: function setPrototypeOf() {\n throw new Error(\"Object.setPrototypeOf() cannot be used on an Immer draft\"); // prettier-ignore\n }\n\n};\nvar arrayTraps = {};\neach(objectTraps, function (key, fn) {\n arrayTraps[key] = function () {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\n\narrayTraps.deleteProperty = function (state, prop) {\n if (isNaN(parseInt(prop))) {\n throw new Error(\"Immer only supports deleting array indices\"); // prettier-ignore\n }\n\n return objectTraps.deleteProperty.call(this, state[0], prop);\n};\n\narrayTraps.set = function (state, prop, value) {\n if (prop !== \"length\" && isNaN(parseInt(prop))) {\n throw new Error(\"Immer only supports setting array indices and the 'length' property\"); // prettier-ignore\n }\n\n return objectTraps.set.call(this, state[0], prop, value);\n}; // returns the object we should be reading the current value from, which is base, until some change has been made\n\n\nfunction source$1(state) {\n return state.copy || state.base;\n} // Access a property without creating an Immer draft.\n\n\nfunction peek$1(draft, prop) {\n var state = draft[DRAFT_STATE];\n var desc = Reflect.getOwnPropertyDescriptor(state ? source$1(state) : draft, prop);\n return desc && desc.value;\n}\n\nfunction get$1(state, prop) {\n if (prop === DRAFT_STATE) { return state; }\n var drafts = state.drafts; // Check for existing draft in unmodified state.\n\n if (!state.modified && has(drafts, prop)) {\n return drafts[prop];\n }\n\n var value = source$1(state)[prop];\n\n if (state.finalized || !isDraftable(value)) {\n return value;\n } // Check for existing draft in modified state.\n\n\n if (state.modified) {\n // Assigned values are never drafted. This catches any drafts we created, too.\n if (value !== peek$1(state.base, prop)) { return value; } // Store drafts on the copy (when one exists).\n\n drafts = state.copy;\n }\n\n return drafts[prop] = createProxy$1(value, state);\n}\n\nfunction set$1(state, prop, value) {\n if (!state.modified) {\n var baseValue = peek$1(state.base, prop); // Optimize based on value's truthiness. Truthy values are guaranteed to\n // never be undefined, so we can avoid the `in` operator. Lastly, truthy\n // values may be drafts, but falsy values are never drafts.\n\n var isUnchanged = value ? is(baseValue, value) || value === state.drafts[prop] : is(baseValue, value) && prop in state.base;\n if (isUnchanged) { return true; }\n markChanged$1(state);\n }\n\n state.assigned[prop] = true;\n state.copy[prop] = value;\n return true;\n}\n\nfunction deleteProperty(state, prop) {\n // The `undefined` check is a fast path for pre-existing keys.\n if (peek$1(state.base, prop) !== undefined || prop in state.base) {\n state.assigned[prop] = false;\n markChanged$1(state);\n }\n\n if (state.copy) { delete state.copy[prop]; }\n return true;\n} // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n// the same guarantee in ES5 mode.\n\n\nfunction getOwnPropertyDescriptor(state, prop) {\n var owner = source$1(state);\n var desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n\n if (desc) {\n desc.writable = true;\n desc.configurable = !Array.isArray(owner) || prop !== \"length\";\n }\n\n return desc;\n}\n\nfunction markChanged$1(state) {\n if (!state.modified) {\n state.modified = true;\n state.copy = assign(shallowCopy(state.base), state.drafts);\n state.drafts = null;\n if (state.parent) { markChanged$1(state.parent); }\n }\n}\n\nvar modernProxy = /*#__PURE__*/Object.freeze({\n willFinalize: willFinalize$1,\n createProxy: createProxy$1\n});\n\nfunction generatePatches(state, basePath, patches, inversePatches) {\n Array.isArray(state.base) ? generateArrayPatches(state, basePath, patches, inversePatches) : generateObjectPatches(state, basePath, patches, inversePatches);\n}\n\nfunction generateArrayPatches(state, basePath, patches, inversePatches) {\n var assign, assign$1;\n\n var base = state.base;\n var copy = state.copy;\n var assigned = state.assigned; // Reduce complexity by ensuring `base` is never longer.\n\n if (copy.length < base.length) {\n (assign = [copy, base], base = assign[0], copy = assign[1]);\n (assign$1 = [inversePatches, patches], patches = assign$1[0], inversePatches = assign$1[1]);\n }\n\n var delta = copy.length - base.length; // Find the first replaced index.\n\n var start = 0;\n\n while (base[start] === copy[start] && start < base.length) {\n ++start;\n } // Find the last replaced index. Search from the end to optimize splice patches.\n\n\n var end = base.length;\n\n while (end > start && base[end - 1] === copy[end + delta - 1]) {\n --end;\n } // Process replaced indices.\n\n\n for (var i = start; i < end; ++i) {\n if (assigned[i] && copy[i] !== base[i]) {\n var path = basePath.concat([i]);\n patches.push({\n op: \"replace\",\n path: path,\n value: copy[i]\n });\n inversePatches.push({\n op: \"replace\",\n path: path,\n value: base[i]\n });\n }\n }\n\n var useRemove = end != base.length;\n var replaceCount = patches.length; // Process added indices.\n\n for (var i$1 = end + delta - 1; i$1 >= end; --i$1) {\n var path$1 = basePath.concat([i$1]);\n patches[replaceCount + i$1 - end] = {\n op: \"add\",\n path: path$1,\n value: copy[i$1]\n };\n\n if (useRemove) {\n inversePatches.push({\n op: \"remove\",\n path: path$1\n });\n }\n } // One \"replace\" patch reverses all non-splicing \"add\" patches.\n\n\n if (!useRemove) {\n inversePatches.push({\n op: \"replace\",\n path: basePath.concat([\"length\"]),\n value: base.length\n });\n }\n}\n\nfunction generateObjectPatches(state, basePath, patches, inversePatches) {\n var base = state.base;\n var copy = state.copy;\n each(state.assigned, function (key, assignedValue) {\n var origValue = base[key];\n var value = copy[key];\n var op = !assignedValue ? \"remove\" : key in base ? \"replace\" : \"add\";\n if (origValue === value && op === \"replace\") { return; }\n var path = basePath.concat(key);\n patches.push(op === \"remove\" ? {\n op: op,\n path: path\n } : {\n op: op,\n path: path,\n value: value\n });\n inversePatches.push(op === \"add\" ? {\n op: \"remove\",\n path: path\n } : op === \"remove\" ? {\n op: \"add\",\n path: path,\n value: origValue\n } : {\n op: \"replace\",\n path: path,\n value: origValue\n });\n });\n}\n\nfunction applyPatches(draft, patches) {\n for (var i = 0; i < patches.length; i++) {\n var patch = patches[i];\n var path = patch.path;\n\n if (path.length === 0 && patch.op === \"replace\") {\n draft = patch.value;\n } else {\n var base = draft;\n\n for (var i$1 = 0; i$1 < path.length - 1; i$1++) {\n base = base[path[i$1]];\n if (!base || typeof base !== \"object\") { throw new Error(\"Cannot apply patch, path doesn't resolve: \" + path.join(\"/\")); } // prettier-ignore\n }\n\n var key = path[path.length - 1];\n\n switch (patch.op) {\n case \"replace\":\n base[key] = patch.value;\n break;\n\n case \"add\":\n if (Array.isArray(base)) {\n // TODO: support \"foo/-\" paths for appending to an array\n base.splice(key, 0, patch.value);\n } else {\n base[key] = patch.value;\n }\n\n break;\n\n case \"remove\":\n if (Array.isArray(base)) {\n base.splice(key, 1);\n } else {\n delete base[key];\n }\n\n break;\n\n default:\n throw new Error(\"Unsupported patch operation: \" + patch.op);\n }\n }\n }\n\n return draft;\n}\n\nfunction verifyMinified() {}\n\nvar configDefaults = {\n useProxies: typeof Proxy !== \"undefined\" && typeof Reflect !== \"undefined\",\n autoFreeze: typeof process !== \"undefined\" ? process.env.NODE_ENV !== \"production\" : verifyMinified.name === \"verifyMinified\",\n onAssign: null,\n onDelete: null,\n onCopy: null\n};\nvar Immer = function Immer(config) {\n assign(this, configDefaults, config);\n this.setUseProxies(this.useProxies);\n this.produce = this.produce.bind(this);\n};\n\nImmer.prototype.produce = function produce (base, recipe, patchListener) {\n var this$1 = this;\n\n // curried invocation\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n var defaultBase = recipe;\n recipe = base;\n var self = this;\n return function curriedProduce(base) {\n var this$1 = this;\n if ( base === void 0 ) base = defaultBase;\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n return self.produce(base, function (draft) { return recipe.call.apply(recipe, [ this$1, draft ].concat( args )); }); // prettier-ignore\n };\n } // prettier-ignore\n\n\n {\n if (typeof recipe !== \"function\") {\n throw new Error(\"The first or second argument to `produce` must be a function\");\n }\n\n if (patchListener !== undefined && typeof patchListener !== \"function\") {\n throw new Error(\"The third argument to `produce` must be a function or undefined\");\n }\n }\n var result; // Only plain objects, arrays, and \"immerable classes\" are drafted.\n\n if (isDraftable(base)) {\n var scope = ImmerScope.enter();\n var proxy = this.createProxy(base);\n var hasError = true;\n\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n // finally instead of catch + rethrow better preserves original stack\n if (hasError) { scope.revoke(); }else { scope.leave(); }\n }\n\n if (result instanceof Promise) {\n return result.then(function (result) {\n scope.usePatches(patchListener);\n return this$1.processResult(result, scope);\n }, function (error) {\n scope.revoke();\n throw error;\n });\n }\n\n scope.usePatches(patchListener);\n return this.processResult(result, scope);\n } else {\n result = recipe(base);\n if (result === undefined) { return base; }\n return result !== NOTHING ? result : undefined;\n }\n};\n\nImmer.prototype.createDraft = function createDraft (base) {\n if (!isDraftable(base)) {\n throw new Error(\"First argument to `createDraft` must be a plain object, an array, or an immerable object\"); // prettier-ignore\n }\n\n var scope = ImmerScope.enter();\n var proxy = this.createProxy(base);\n proxy[DRAFT_STATE].isManual = true;\n scope.leave();\n return proxy;\n};\n\nImmer.prototype.finishDraft = function finishDraft (draft, patchListener) {\n var state = draft && draft[DRAFT_STATE];\n\n if (!state || !state.isManual) {\n throw new Error(\"First argument to `finishDraft` must be a draft returned by `createDraft`\"); // prettier-ignore\n }\n\n if (state.finalized) {\n throw new Error(\"The given draft is already finalized\"); // prettier-ignore\n }\n\n var scope = state.scope;\n scope.usePatches(patchListener);\n return this.processResult(undefined, scope);\n};\n\nImmer.prototype.setAutoFreeze = function setAutoFreeze (value) {\n this.autoFreeze = value;\n};\n\nImmer.prototype.setUseProxies = function setUseProxies (value) {\n this.useProxies = value;\n assign(this, value ? modernProxy : legacyProxy);\n};\n\nImmer.prototype.applyPatches = function applyPatches$1 (base, patches) {\n // Mutate the base state when a draft is passed.\n if (isDraft(base)) {\n return applyPatches(base, patches);\n } // Otherwise, produce a copy of the base state.\n\n\n return this.produce(base, function (draft) { return applyPatches(draft, patches); });\n};\n/** @internal */\n\n\nImmer.prototype.processResult = function processResult (result, scope) {\n var baseDraft = scope.drafts[0];\n var isReplaced = result !== undefined && result !== baseDraft;\n this.willFinalize(scope, result, isReplaced);\n\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified) {\n scope.revoke();\n throw new Error(\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\"); // prettier-ignore\n }\n\n if (isDraftable(result)) {\n // Finalize the result in case it contains (or is) a subset of the draft.\n result = this.finalize(result, null, scope);\n }\n\n if (scope.patches) {\n scope.patches.push({\n op: \"replace\",\n path: [],\n value: result\n });\n scope.inversePatches.push({\n op: \"replace\",\n path: [],\n value: baseDraft[DRAFT_STATE].base\n });\n }\n } else {\n // Finalize the base draft.\n result = this.finalize(baseDraft, [], scope);\n }\n\n scope.revoke();\n\n if (scope.patches) {\n scope.patchListener(scope.patches, scope.inversePatches);\n }\n\n return result !== NOTHING ? result : undefined;\n};\n/**\n * @internal\n * Finalize a draft, returning either the unmodified base state or a modified\n * copy of the base state.\n */\n\n\nImmer.prototype.finalize = function finalize (draft, path, scope) {\n var this$1 = this;\n\n var state = draft[DRAFT_STATE];\n\n if (!state) {\n if (Object.isFrozen(draft)) { return draft; }\n return this.finalizeTree(draft, null, scope);\n } // Never finalize drafts owned by another scope.\n\n\n if (state.scope !== scope) {\n return draft;\n }\n\n if (!state.modified) {\n return state.base;\n }\n\n if (!state.finalized) {\n state.finalized = true;\n this.finalizeTree(state.draft, path, scope);\n\n if (this.onDelete) {\n // The `assigned` object is unreliable with ES5 drafts.\n if (this.useProxies) {\n var assigned = state.assigned;\n\n for (var prop in assigned) {\n if (!assigned[prop]) { this.onDelete(state, prop); }\n }\n } else {\n var base = state.base;\n var copy = state.copy;\n each(base, function (prop) {\n if (!has(copy, prop)) { this$1.onDelete(state, prop); }\n });\n }\n }\n\n if (this.onCopy) {\n this.onCopy(state);\n } // At this point, all descendants of `state.copy` have been finalized,\n // so we can be sure that `scope.canAutoFreeze` is accurate.\n\n\n if (this.autoFreeze && scope.canAutoFreeze) {\n Object.freeze(state.copy);\n }\n\n if (path && scope.patches) {\n generatePatches(state, path, scope.patches, scope.inversePatches);\n }\n }\n\n return state.copy;\n};\n/**\n * @internal\n * Finalize all drafts in the given state tree.\n */\n\n\nImmer.prototype.finalizeTree = function finalizeTree (root, rootPath, scope) {\n var this$1 = this;\n\n var state = root[DRAFT_STATE];\n\n if (state) {\n if (!this.useProxies) {\n // Create the final copy, with added keys and without deleted keys.\n state.copy = shallowCopy(state.draft, true);\n }\n\n root = state.copy;\n }\n\n var needPatches = !!rootPath && !!scope.patches;\n\n var finalizeProperty = function (prop, value, parent) {\n if (value === parent) {\n throw Error(\"Immer forbids circular references\");\n } // In the `finalizeTree` method, only the `root` object may be a draft.\n\n\n var isDraftProp = !!state && parent === root;\n\n if (isDraft(value)) {\n var path = isDraftProp && needPatches && !state.assigned[prop] ? rootPath.concat(prop) : null; // Drafts owned by `scope` are finalized here.\n\n value = this$1.finalize(value, path, scope); // Drafts from another scope must prevent auto-freezing.\n\n if (isDraft(value)) {\n scope.canAutoFreeze = false;\n } // Preserve non-enumerable properties.\n\n\n if (Array.isArray(parent) || isEnumerable(parent, prop)) {\n parent[prop] = value;\n } else {\n Object.defineProperty(parent, prop, {\n value: value\n });\n } // Unchanged drafts are never passed to the `onAssign` hook.\n\n\n if (isDraftProp && value === state.base[prop]) { return; }\n } // Unchanged draft properties are ignored.\n else if (isDraftProp && is(value, state.base[prop])) {\n return;\n } // Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n else if (isDraftable(value) && !Object.isFrozen(value)) {\n each(value, finalizeProperty);\n }\n\n if (isDraftProp && this$1.onAssign) {\n this$1.onAssign(state, prop, value);\n }\n };\n\n each(root, finalizeProperty);\n return root;\n};\n\nvar immer = new Immer();\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n\nvar produce = immer.produce;\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is disabled in production.\n */\n\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\n\nvar setUseProxies = immer.setUseProxies.bind(immer);\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\n\nvar applyPatches$1 = immer.applyPatches.bind(immer);\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\n\nvar createDraft = immer.createDraft.bind(immer);\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\n\nvar finishDraft = immer.finishDraft.bind(immer);\n\nexport default produce;\nexport { Immer, applyPatches$1 as applyPatches, createDraft, finishDraft, DRAFTABLE as immerable, isDraft, isDraftable, NOTHING as nothing, original, produce, setAutoFreeze, setUseProxies };\n//# sourceMappingURL=immer.module.js.map\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","function Similar() {\n\tthis.list = [];\n\tthis.lastItem = undefined;\n\tthis.size = 0;\n\n\treturn this;\n}\n\nSimilar.prototype.get = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn this.lastItem.val;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn this.list[index].val;\n\t}\n\n\treturn undefined;\n};\n\nSimilar.prototype.set = function(key, val) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem.val = val;\n\t\treturn this;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\tthis.list[index].val = val;\n\t\treturn this;\n\t}\n\n\tthis.lastItem = { key: key, val: val };\n\tthis.list.push(this.lastItem);\n\tthis.size++;\n\n\treturn this;\n};\n\nSimilar.prototype.delete = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem = undefined;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.size--;\n\t\treturn this.list.splice(index, 1)[0];\n\t}\n\n\treturn undefined;\n};\n\n\n// important that has() doesn't use get() in case an existing key has a falsy value, in which case has() would return false\nSimilar.prototype.has = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn true;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nSimilar.prototype.forEach = function(callback, thisArg) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tcallback.call(thisArg || this, this.list[i].val, this.list[i].key, this);\n\t}\n};\n\nSimilar.prototype.indexOf = function(key) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tif (this.isEqual(this.list[i].key, key)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nSimilar.prototype.isEqual = function(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n};\n\nmodule.exports = Similar;","module.exports = function(forceSimilar) {\n\tif (typeof Map !== 'function' || forceSimilar) {\n\t\tvar Similar = require('./similar');\n\t\treturn new Similar();\n\t}\n\telse {\n\t\treturn new Map();\n\t}\n}\n","var MapOrSimilar = require('map-or-similar');\n\nmodule.exports = function (limit) {\n\tvar cache = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true'),\n\t\tlru = [];\n\n\treturn function (fn) {\n\t\tvar memoizerific = function () {\n\t\t\tvar currentCache = cache,\n\t\t\t\tnewMap,\n\t\t\t\tfnResult,\n\t\t\t\targsLengthMinusOne = arguments.length - 1,\n\t\t\t\tlruPath = Array(argsLengthMinusOne + 1),\n\t\t\t\tisMemoized = true,\n\t\t\t\ti;\n\n\t\t\tif ((memoizerific.numArgs || memoizerific.numArgs === 0) && memoizerific.numArgs !== argsLengthMinusOne + 1) {\n\t\t\t\tthrow new Error('Memoizerific functions should always be called with the same number of arguments');\n\t\t\t}\n\n\t\t\t// loop through each argument to traverse the map tree\n\t\t\tfor (i = 0; i < argsLengthMinusOne; i++) {\n\t\t\t\tlruPath[i] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[i]\n\t\t\t\t};\n\n\t\t\t\t// climb through the hierarchical map tree until the second-last argument has been found, or an argument is missing.\n\t\t\t\t// if all arguments up to the second-last have been found, this will potentially be a cache hit (determined later)\n\t\t\t\tif (currentCache.has(arguments[i])) {\n\t\t\t\t\tcurrentCache = currentCache.get(arguments[i]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tisMemoized = false;\n\n\t\t\t\t// make maps until last value\n\t\t\t\tnewMap = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true');\n\t\t\t\tcurrentCache.set(arguments[i], newMap);\n\t\t\t\tcurrentCache = newMap;\n\t\t\t}\n\n\t\t\t// we are at the last arg, check if it is really memoized\n\t\t\tif (isMemoized) {\n\t\t\t\tif (currentCache.has(arguments[argsLengthMinusOne])) {\n\t\t\t\t\tfnResult = currentCache.get(arguments[argsLengthMinusOne]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tisMemoized = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the result wasn't memoized, compute it and cache it\n\t\t\tif (!isMemoized) {\n\t\t\t\tfnResult = fn.apply(null, arguments);\n\t\t\t\tcurrentCache.set(arguments[argsLengthMinusOne], fnResult);\n\t\t\t}\n\n\t\t\t// if there is a cache limit, purge any extra results\n\t\t\tif (limit > 0) {\n\t\t\t\tlruPath[argsLengthMinusOne] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[argsLengthMinusOne]\n\t\t\t\t};\n\n\t\t\t\tif (isMemoized) {\n\t\t\t\t\tmoveToMostRecentLru(lru, lruPath);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlru.push(lruPath);\n\t\t\t\t}\n\n\t\t\t\tif (lru.length > limit) {\n\t\t\t\t\tremoveCachedResult(lru.shift());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmemoizerific.wasMemoized = isMemoized;\n\t\t\tmemoizerific.numArgs = argsLengthMinusOne + 1;\n\n\t\t\treturn fnResult;\n\t\t};\n\n\t\tmemoizerific.limit = limit;\n\t\tmemoizerific.wasMemoized = false;\n\t\tmemoizerific.cache = cache;\n\t\tmemoizerific.lru = lru;\n\n\t\treturn memoizerific;\n\t};\n};\n\n// move current args to most recent position\nfunction moveToMostRecentLru(lru, lruPath) {\n\tvar lruLen = lru.length,\n\t\tlruPathLen = lruPath.length,\n\t\tisMatch,\n\t\ti, ii;\n\n\tfor (i = 0; i < lruLen; i++) {\n\t\tisMatch = true;\n\t\tfor (ii = 0; ii < lruPathLen; ii++) {\n\t\t\tif (!isEqual(lru[i][ii].arg, lruPath[ii].arg)) {\n\t\t\t\tisMatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (isMatch) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlru.push(lru.splice(i, 1)[0]);\n}\n\n// remove least recently used cache item and all dead branches\nfunction removeCachedResult(removedLru) {\n\tvar removedLruLen = removedLru.length,\n\t\tcurrentLru = removedLru[removedLruLen - 1],\n\t\ttmp,\n\t\ti;\n\n\tcurrentLru.cacheItem.delete(currentLru.arg);\n\n\t// walk down the tree removing dead branches (size 0) along the way\n\tfor (i = removedLruLen - 2; i >= 0; i--) {\n\t\tcurrentLru = removedLru[i];\n\t\ttmp = currentLru.cacheItem.get(currentLru.arg);\n\n\t\tif (!tmp || !tmp.size) {\n\t\t\tcurrentLru.cacheItem.delete(currentLru.arg);\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nfunction isEqual(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n}","import { isDraft, finishDraft, createDraft, setAutoFreeze } from 'immer-peasy';\nimport React, { createContext, useContext, useRef, useReducer, useLayoutEffect, useEffect, useMemo, useState } from 'react';\nimport { compose, createStore as createStore$1, applyMiddleware } from 'redux';\nimport reduxThunk from 'redux-thunk';\nimport memoizerific from 'memoizerific';\n\nvar StoreContext = createContext();\n\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction createStoreStateHook(Context) {\n return function useStoreState(mapState) {\n var store = useContext(Context);\n var mapStateRef = useRef(mapState);\n var stateRef = useRef();\n var mountedRef = useRef(true);\n var subscriptionMapStateError = useRef();\n\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n if (subscriptionMapStateError.current || mapStateRef.current !== mapState || stateRef.current === undefined) {\n try {\n stateRef.current = mapState(store.getState());\n } catch (err) {\n var errorMessage = \"An error occurred trying to map state in a useStoreState hook: \" + err.message + \".\";\n\n if (subscriptionMapStateError.current) {\n errorMessage += \"\\nThis error may be related to the following error:\\n\" + subscriptionMapStateError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n }\n\n useIsomorphicLayoutEffect(function () {\n mapStateRef.current = mapState;\n subscriptionMapStateError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n var checkMapState = function checkMapState() {\n try {\n var newState = mapStateRef.current(store.getState());\n\n if (newState === stateRef.current) {\n return;\n }\n\n stateRef.current = newState;\n } catch (err) {\n // see https://github.com/reduxjs/react-redux/issues/1179\n // There is a possibility mapState will fail due to stale state or\n // props, therefore we will just track the error and force our\n // component to update. It should then receive the updated state\n subscriptionMapStateError.current = err;\n }\n\n if (mountedRef.current) {\n forceRender({});\n }\n };\n\n var unsubscribe = store.subscribe(checkMapState);\n checkMapState();\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, []);\n return stateRef.current;\n };\n}\nvar useStoreState = createStoreStateHook(StoreContext);\nfunction createStoreActionsHook(Context) {\n return function useStoreActions(mapActions) {\n var store = useContext(Context);\n return mapActions(store.getActions());\n };\n}\nvar useStoreActions = createStoreActionsHook(StoreContext);\nfunction createStoreDispatchHook(Context) {\n return function useStoreDispatch() {\n var store = useContext(Context);\n return store.dispatch;\n };\n}\nvar useStoreDispatch = createStoreDispatchHook(StoreContext);\nfunction useStore() {\n return useContext(StoreContext);\n}\nfunction createTypedHooks() {\n return {\n useStoreActions: useStoreActions,\n useStoreDispatch: useStoreDispatch,\n useStoreState: useStoreState,\n useStore: useStore\n };\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar actionSymbol = '🙈action🙈';\nvar actionOnSymbol = '🙈actionOn🙈';\nvar computedSymbol = '🙈computedSymbol🙈';\nvar reducerSymbol = '🙈reducer🙈';\nvar thunkOnSymbol = '🙈thunkOn🙈';\nvar thunkSymbol = '🙈thunk🙈';\n\nvar debug = function debug(state) {\n if (isDraft(state)) {\n return finishDraft(createDraft(state));\n }\n\n return state;\n};\nvar memo = function memo(fn, cacheSize) {\n return memoizerific(cacheSize)(fn);\n};\nvar actionOn = function actionOn(targetResolver, fn) {\n fn[actionOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar action = function action(fn) {\n fn[actionSymbol] = {};\n return fn;\n};\nvar defaultStateResolvers = [function (state) {\n return state;\n}];\nvar computed = function computed(fnOrStateResolvers, fn) {\n if (typeof fn === 'function') {\n fn[computedSymbol] = {\n stateResolvers: fnOrStateResolvers\n };\n return fn;\n }\n\n fnOrStateResolvers[computedSymbol] = {\n stateResolvers: defaultStateResolvers\n };\n return fnOrStateResolvers;\n};\nvar thunkOn = function thunkOn(targetResolver, fn) {\n fn[thunkOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar thunk = function thunk(fn) {\n fn[thunkSymbol] = {};\n return fn;\n};\nvar reducer = function reducer(fn) {\n fn[reducerSymbol] = {};\n return fn;\n};\n\nvar isStateObject = function isStateObject(x) {\n return x !== null && typeof x === 'object' && !Array.isArray(x) && x.constructor === Object;\n};\nvar get = function get(path, target) {\n return path.reduce(function (acc, cur) {\n return isStateObject(acc) ? acc[cur] : undefined;\n }, target);\n};\nvar set = function set(path, target, value) {\n path.reduce(function (acc, cur, idx) {\n if (idx + 1 === path.length) {\n acc[cur] = value;\n } else {\n acc[cur] = acc[cur] || {};\n }\n\n return acc[cur];\n }, target);\n};\n\nvar newify = function newify(currentPath, currentState, finalValue) {\n if (currentPath.length === 0) {\n return finalValue;\n }\n\n var newState = _extends({}, currentState);\n\n var key = currentPath[0];\n\n if (currentPath.length === 1) {\n newState[key] = finalValue;\n } else {\n newState[key] = newify(currentPath.slice(1), newState[key], finalValue);\n }\n\n return newState;\n};\n\nfunction createStoreInternals(_ref) {\n var disableImmer = _ref.disableImmer,\n initialState = _ref.initialState,\n injections = _ref.injections,\n model = _ref.model,\n reducerEnhancer = _ref.reducerEnhancer,\n references = _ref.references;\n\n function simpleProduce(path, state, fn) {\n if (disableImmer) {\n var _current = get(path, state);\n\n var next = fn(_current);\n\n if (_current !== next) {\n return newify(path, state, next);\n }\n\n return state;\n }\n\n var draft = createDraft(state);\n\n var current = get(path, draft);\n\n fn(current);\n return finishDraft(draft);\n }\n\n var defaultState = initialState;\n var actionCreatorDict = {};\n var actionCreators = {};\n var actionReducersDict = {};\n var actionThunks = {};\n var computedProperties = [];\n var customReducers = [];\n var listenerActionCreators = {};\n var listenerActionMap = {};\n var listenerDefinitions = [];\n var computedState = {\n isInReducer: false,\n currentState: defaultState\n };\n\n var recursiveExtractDefsFromModel = function recursiveExtractDefsFromModel(current, parentPath) {\n return Object.keys(current).forEach(function (key) {\n var value = current[key];\n var path = [].concat(parentPath, [key]);\n var meta = {\n parent: parentPath,\n path: path\n };\n\n var handleValueAsState = function handleValueAsState() {\n var initialParentRef = get(parentPath, initialState);\n\n if (initialParentRef && key in initialParentRef) {\n set(path, defaultState, initialParentRef[key]);\n } else {\n set(path, defaultState, value);\n }\n };\n\n if (typeof value === 'function') {\n if (value[actionSymbol] || value[actionOnSymbol]) {\n var prefix = value[actionSymbol] ? '@action' : '@actionOn';\n var type = prefix + \".\" + path.join('.');\n var actionMeta = value[actionSymbol] || value[actionOnSymbol];\n actionMeta.actionName = key;\n actionMeta.type = type;\n actionMeta.parent = meta.parent;\n actionMeta.path = meta.path; // Action Reducer\n\n actionReducersDict[type] = value; // Action Creator\n\n var actionCreator = function actionCreator(payload) {\n var actionDefinition = {\n type: type,\n payload: payload\n };\n\n if (value[actionOnSymbol] && actionMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(actionMeta.resolvedTargets);\n }\n\n var result = references.dispatch(actionDefinition);\n return result;\n };\n\n actionCreator.type = type;\n actionCreatorDict[type] = actionCreator;\n\n if (key !== 'easyPeasyReplaceState') {\n if (value[actionOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, actionCreator);\n } else {\n set(path, actionCreators, actionCreator);\n }\n }\n } else if (value[thunkSymbol] || value[thunkOnSymbol]) {\n var _prefix = value[thunkSymbol] ? '@thunk' : '@thunkOn';\n\n var _type = _prefix + \".\" + path.join('.');\n\n var thunkMeta = value[thunkSymbol] || value[thunkOnSymbol];\n thunkMeta.actionName = key;\n thunkMeta.type = _type;\n thunkMeta.parent = meta.parent;\n thunkMeta.path = meta.path; // Thunk Action\n\n var thunkHandler = function thunkHandler(payload) {\n var helpers = {\n dispatch: references.dispatch,\n getState: function getState() {\n return get(parentPath, references.getState());\n },\n getStoreActions: function getStoreActions() {\n return actionCreators;\n },\n getStoreState: references.getState,\n injections: injections,\n meta: meta\n };\n\n if (value[thunkOnSymbol] && thunkMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(thunkMeta.resolvedTargets);\n }\n\n return value(get(parentPath, actionCreators), payload, helpers);\n };\n\n set(path, actionThunks, thunkHandler); // Thunk Action Creator\n\n var startType = _type + \"(start)\";\n var successType = _type + \"(success)\";\n var failType = _type + \"(fail)\";\n\n var _actionCreator = function _actionCreator(payload) {\n var dispatchError = function dispatchError(err) {\n references.dispatch({\n type: failType,\n payload: payload,\n error: err\n });\n references.dispatch({\n type: _type,\n payload: payload,\n error: err\n });\n };\n\n var dispatchSuccess = function dispatchSuccess(result) {\n references.dispatch({\n type: successType,\n payload: payload,\n result: result\n });\n references.dispatch({\n type: _type,\n payload: payload,\n result: result\n });\n };\n\n references.dispatch({\n type: startType,\n payload: payload\n });\n\n try {\n var result = references.dispatch(function () {\n return thunkHandler(payload);\n });\n\n if (typeof result === 'object' && typeof result.then === 'function') {\n return result.then(function (resolved) {\n dispatchSuccess(resolved);\n return resolved;\n }).catch(function (err) {\n dispatchError(err);\n throw err;\n });\n }\n\n dispatchSuccess(result);\n return result;\n } catch (err) {\n dispatchError(err);\n throw err;\n }\n };\n\n _actionCreator.type = _type;\n _actionCreator.startType = startType;\n _actionCreator.successType = successType;\n _actionCreator.failType = failType;\n actionCreatorDict[_type] = _actionCreator;\n\n if (value[thunkOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, _actionCreator);\n } else {\n set(path, actionCreators, _actionCreator);\n }\n } else if (value[computedSymbol]) {\n var parent = get(parentPath, defaultState);\n\n var computedMeta = value[computedSymbol];\n var memoisedResultFn = memoizerific(1)(value);\n\n var createComputedProperty = function createComputedProperty(o) {\n Object.defineProperty(o, key, {\n configurable: true,\n enumerable: true,\n get: function get$1() {\n var storeState;\n\n if (computedState.isInReducer) {\n storeState = computedState.currentState;\n } else if (references.getState == null) {\n return undefined;\n } else {\n try {\n storeState = references.getState();\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Invalid access attempt to a computed property');\n }\n\n return undefined;\n }\n }\n\n var state = get(parentPath, storeState);\n\n var inputs = computedMeta.stateResolvers.map(function (resolver) {\n return resolver(state, storeState);\n });\n return memoisedResultFn.apply(void 0, inputs);\n }\n });\n };\n\n createComputedProperty(parent);\n computedProperties.push({\n key: key,\n parentPath: parentPath,\n createComputedProperty: createComputedProperty\n });\n } else if (value[reducerSymbol]) {\n customReducers.push({\n key: key,\n parentPath: parentPath,\n reducer: value\n });\n } else {\n handleValueAsState();\n }\n } else if (isStateObject(value)) {\n var existing = get(path, defaultState);\n\n if (existing == null) {\n set(path, defaultState, {});\n }\n\n recursiveExtractDefsFromModel(value, path);\n } else {\n handleValueAsState();\n }\n });\n };\n\n recursiveExtractDefsFromModel(model, []);\n listenerDefinitions.forEach(function (listenerActionOrThunk) {\n var listenerMeta = listenerActionOrThunk[actionOnSymbol] || listenerActionOrThunk[thunkOnSymbol];\n var targets = listenerMeta.targetResolver(get(listenerMeta.parent, actionCreators), actionCreators);\n var targetTypes = (Array.isArray(targets) ? targets : [targets]).reduce(function (acc, target) {\n if (typeof target === 'function' && target.type && actionCreatorDict[target.type]) {\n acc.push(target.type);\n } else if (typeof target === 'string') {\n acc.push(target);\n }\n\n return acc;\n }, []);\n listenerMeta.resolvedTargets = targetTypes;\n targetTypes.forEach(function (targetType) {\n var listenerReg = listenerActionMap[targetType] || [];\n listenerReg.push(actionCreatorDict[listenerMeta.type]);\n listenerActionMap[targetType] = listenerReg;\n });\n });\n\n var createReducer = function createReducer() {\n var runActionReducerAtPath = function runActionReducerAtPath(state, action, actionReducer, path) {\n return simpleProduce(path, state, function (draft) {\n return actionReducer(draft, action.payload);\n });\n };\n\n var reducerForActions = function reducerForActions(state, action) {\n var actionReducer = actionReducersDict[action.type];\n\n if (actionReducer) {\n var actionMeta = actionReducer[actionSymbol] || actionReducer[actionOnSymbol];\n return runActionReducerAtPath(state, action, actionReducer, actionMeta.parent);\n }\n\n return state;\n };\n\n var reducerForCustomReducers = function reducerForCustomReducers(state, action) {\n return customReducers.reduce(function (acc, _ref2) {\n var parentPath = _ref2.parentPath,\n key = _ref2.key,\n red = _ref2.reducer;\n return simpleProduce(parentPath, acc, function (draft) {\n draft[key] = red(draft[key], action);\n return draft;\n });\n }, state);\n };\n\n var rootReducer = function rootReducer(state, action) {\n var stateAfterActions = reducerForActions(state, action);\n var next = customReducers.length > 0 ? reducerForCustomReducers(stateAfterActions, action) : stateAfterActions;\n\n if (state !== next) {\n computedProperties.forEach(function (_ref3) {\n var parentPath = _ref3.parentPath,\n createComputedProperty = _ref3.createComputedProperty;\n createComputedProperty(get(parentPath, next));\n });\n }\n\n return next;\n };\n\n return rootReducer;\n };\n\n return {\n actionCreatorDict: actionCreatorDict,\n actionCreators: actionCreators,\n computedProperties: computedProperties,\n computedState: computedState,\n defaultState: defaultState,\n listenerActionCreators: listenerActionCreators,\n listenerActionMap: listenerActionMap,\n reducer: reducerEnhancer(createReducer())\n };\n}\n\nfunction createStore(model, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n compose$1 = _options.compose,\n _options$devTools = _options.devTools,\n devTools = _options$devTools === void 0 ? true : _options$devTools,\n _options$disableImmer = _options.disableImmer,\n disableImmer = _options$disableImmer === void 0 ? false : _options$disableImmer,\n _options$enhancers = _options.enhancers,\n enhancers = _options$enhancers === void 0 ? [] : _options$enhancers,\n _options$initialState = _options.initialState,\n initialState = _options$initialState === void 0 ? {} : _options$initialState,\n injections = _options.injections,\n _options$middleware = _options.middleware,\n middleware = _options$middleware === void 0 ? [] : _options$middleware,\n _options$mockActions = _options.mockActions,\n mockActions = _options$mockActions === void 0 ? false : _options$mockActions,\n _options$name = _options.name,\n storeName = _options$name === void 0 ? \"EasyPeasyStore\" : _options$name,\n _options$reducerEnhan = _options.reducerEnhancer,\n reducerEnhancer = _options$reducerEnhan === void 0 ? function (rootReducer) {\n return rootReducer;\n } : _options$reducerEnhan;\n\n var bindReplaceState = function bindReplaceState(modelDef) {\n return _extends({}, modelDef, {\n easyPeasyReplaceState: action(function (state, payload) {\n return payload;\n })\n });\n };\n\n var modelDefinition = bindReplaceState(model);\n var mockedActions = [];\n var references = {};\n\n var bindStoreInternals = function bindStoreInternals(state) {\n if (state === void 0) {\n state = {};\n }\n\n references.internals = createStoreInternals({\n disableImmer: disableImmer,\n initialState: state,\n injections: injections,\n model: modelDefinition,\n reducerEnhancer: reducerEnhancer,\n references: references\n });\n };\n\n bindStoreInternals(initialState);\n\n var listenerActionsMiddleware = function listenerActionsMiddleware() {\n return function (next) {\n return function (action) {\n var result = next(action);\n\n if (action && references.internals.listenerActionMap[action.type] && references.internals.listenerActionMap[action.type].length > 0) {\n var sourceAction = references.internals.actionCreatorDict[action.type];\n references.internals.listenerActionMap[action.type].forEach(function (actionCreator) {\n actionCreator({\n type: sourceAction ? sourceAction.type : action.type,\n payload: action.payload,\n error: action.error,\n result: action.result\n });\n });\n }\n\n return result;\n };\n };\n };\n\n var mockActionsMiddleware = function mockActionsMiddleware() {\n return function () {\n return function (action) {\n if (action != null) {\n mockedActions.push(action);\n }\n\n return undefined;\n };\n };\n };\n\n var computedPropertiesMiddleware = function computedPropertiesMiddleware(store) {\n return function (next) {\n return function (action) {\n references.internals.computedState.currentState = store.getState();\n references.internals.computedState.isInReducer = true;\n return next(action);\n };\n };\n };\n\n var easyPeasyMiddleware = [computedPropertiesMiddleware, reduxThunk].concat(middleware, [listenerActionsMiddleware]);\n\n if (mockActions) {\n easyPeasyMiddleware.push(mockActionsMiddleware);\n }\n\n var composeEnhancers = compose$1 || (devTools && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: storeName\n }) : compose);\n var store = createStore$1(references.internals.reducer, references.internals.defaultState, composeEnhancers.apply(void 0, [applyMiddleware.apply(void 0, easyPeasyMiddleware)].concat(enhancers)));\n store.subscribe(function () {\n references.internals.computedState.isInReducer = false;\n });\n references.dispatch = store.dispatch;\n references.getState = store.getState;\n\n var bindActionCreators = function bindActionCreators() {\n Object.keys(store.dispatch).forEach(function (actionsKey) {\n delete store.dispatch[actionsKey];\n });\n Object.keys(references.internals.actionCreators).forEach(function (key) {\n store.dispatch[key] = references.internals.actionCreators[key];\n });\n };\n\n bindActionCreators();\n\n var rebindStore = function rebindStore(removeKey) {\n var currentState = store.getState();\n\n if (removeKey) {\n delete currentState[removeKey];\n }\n\n bindStoreInternals(store.getState());\n store.replaceReducer(references.internals.reducer);\n references.internals.actionCreatorDict['@action.easyPeasyReplaceState'](references.internals.defaultState);\n bindActionCreators();\n };\n\n return Object.assign(store, {\n addModel: function addModel(key, modelForKey) {\n if (modelDefinition[key] && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model already contains a model definition for \\\"\" + key + \"\\\"\");\n store.removeModel(key);\n }\n\n modelDefinition[key] = modelForKey;\n rebindStore();\n },\n clearMockedActions: function clearMockedActions() {\n mockedActions = [];\n },\n getActions: function getActions() {\n return references.internals.actionCreators;\n },\n getListeners: function getListeners() {\n return references.internals.listenerActionCreators;\n },\n getMockedActions: function getMockedActions() {\n return [].concat(mockedActions);\n },\n reconfigure: function reconfigure(newModel) {\n modelDefinition = bindReplaceState(newModel);\n rebindStore();\n },\n removeModel: function removeModel(key) {\n if (!modelDefinition[key]) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model does not contain a model definition for \\\"\" + key + \"\\\"\");\n }\n\n return;\n }\n\n delete modelDefinition[key];\n rebindStore(key);\n }\n });\n}\n\n/* eslint-disable react/prop-types */\nfunction createContextStore(model, config) {\n var StoreContext = createContext();\n\n function Provider(_ref) {\n var children = _ref.children,\n initialData = _ref.initialData;\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n }\n\n function useStore() {\n return useContext(StoreContext);\n }\n\n return {\n Provider: Provider,\n useStore: useStore,\n useStoreState: createStoreStateHook(StoreContext),\n useStoreActions: createStoreActionsHook(StoreContext),\n useStoreDispatch: createStoreDispatchHook(StoreContext)\n };\n}\n\n/**\n * Some good references on the topic of reinitialisation:\n * - https://github.com/facebook/react/issues/14830\n */\n\nfunction createComponentStore(model, config) {\n return function useLocalStore(initialData) {\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n var previousStateRef = useRef(store.getState());\n\n var _useState = useState(function () {\n return store.getState();\n }),\n currentState = _useState[0],\n setCurrentState = _useState[1];\n\n useEffect(function () {\n return store.subscribe(function () {\n var nextState = store.getState();\n\n if (previousStateRef.current !== nextState) {\n previousStateRef.current = nextState;\n setCurrentState(nextState);\n }\n });\n }, [store]);\n return [currentState, store.getActions()];\n };\n}\n\nvar StoreProvider = function StoreProvider(_ref) {\n var children = _ref.children,\n store = _ref.store;\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n};\n\n/**\n * The auto freeze feature of immer doesn't seem to work in our testing. We have\n * explicitly disabled it to avoid perf issues.\n */\n\nsetAutoFreeze(false);\n\nexport { StoreProvider, action, actionOn, computed, createComponentStore, createContextStore, createStore, createTypedHooks, debug, memo, reducer, thunk, thunkOn, useStore, useStoreActions, useStoreDispatch, useStoreState };\n//# sourceMappingURL=easy-peasy.esm.js.map\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i(t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr\";\nimport transition_attrTween from \"./attrTween\";\nimport transition_delay from \"./delay\";\nimport transition_duration from \"./duration\";\nimport transition_ease from \"./ease\";\nimport transition_filter from \"./filter\";\nimport transition_merge from \"./merge\";\nimport transition_on from \"./on\";\nimport transition_remove from \"./remove\";\nimport transition_select from \"./select\";\nimport transition_selectAll from \"./selectAll\";\nimport transition_selection from \"./selection\";\nimport transition_style from \"./style\";\nimport transition_styleTween from \"./styleTween\";\nimport transition_text from \"./text\";\nimport transition_transition from \"./transition\";\nimport transition_tween from \"./tween\";\nimport transition_end from \"./end\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i(t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index\";\nimport schedule from \"../transition/schedule\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt\";\nimport selection_transition from \"./transition\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import { action } from 'easy-peasy';\nimport isEqual from 'fast-deep-equal';\n\nimport { getBoundingBox, getNodesInside, getConnectedEdges } from '../utils/graph';\n\nexport default {\n setOnConnect: action((state, onConnect) => {\n state.onConnect = onConnect;\n }),\n\n setNodes: action((state, nodes) => {\n state.nodes = nodes;\n }),\n\n setEdges: action((state, edges) => {\n state.edges = edges;\n }),\n\n updateNodeData: action((state, { id, ...data }) => {\n state.nodes.forEach((n) => {\n if (n.id === id) {\n n.__rg = {\n ...n.__rg,\n ...data\n };\n }\n });\n }),\n\n updateNodePos: action((state, { id, pos }) => {\n state.nodes.forEach((n) => {\n if (n.id === id) {\n n.__rg = {\n ...n.__rg,\n position: pos\n };\n }\n });\n }),\n\n setSelection: action((state, isActive) => {\n state.selectionActive = isActive;\n }),\n\n setNodesSelection: action((state, { isActive, selection }) => {\n if (!isActive) {\n state.nodesSelectionActive = false;\n state.selectedElements = [];\n\n return;\n }\n const selectedNodes = getNodesInside(state.nodes, selection, state.transform);\n const selectedNodesBbox = getBoundingBox(selectedNodes);\n\n state.selection = selection;\n state.nodesSelectionActive = true;\n state.selectedNodesBbox = selectedNodesBbox;\n state.nodesSelectionActive = true;\n }),\n\n setSelectedElements: action((state, elements) => {\n const selectedElementsArr = Array.isArray(elements) ? elements : [elements];\n const selectedElementsUpdated = !isEqual(selectedElementsArr, state.selectedElements);\n const selectedElements = selectedElementsUpdated ? selectedElementsArr : state.selectedElements;\n\n state.selectedElements = selectedElements;\n }),\n\n updateSelection: action((state, selection) => {\n const selectedNodes = getNodesInside(state.nodes, selection, state.transform);\n const selectedEdges = getConnectedEdges(selectedNodes, state.edges);\n\n const nextSelectedElements = [...selectedNodes, ...selectedEdges];\n const selectedElementsUpdated = !isEqual(nextSelectedElements, state.selectedElements);\n\n state.selection = selection;\n state.selectedElements = selectedElementsUpdated ? nextSelectedElements: state.selectedElements\n }),\n\n updateTransform: action((state, transform) => {\n state.transform = [transform.x, transform.y, transform.k];\n }),\n\n updateSize: action((state, size) => {\n state.width = size.width;\n state.height = size.height;\n }),\n\n initD3: action((state, { zoom, selection }) => {\n state.d3Zoom = zoom;\n state.d3Selection = selection;\n state.d3Initialised = true;\n }),\n\n setConnectionPosition: action((state, position) => {\n state.connectionPosition = position;\n }),\n\n setConnectionSourceId: action((state, sourceId) => {\n state.connectionSourceId = sourceId;\n })\n};","import { createStore } from 'easy-peasy';\n\nimport actions from './actions';\n\nconst store = createStore({\n width: 0,\n height: 0,\n transform: [0, 0, 1],\n nodes: [],\n edges: [],\n selectedElements: [],\n selectedNodesBbox: { x: 0, y: 0, width: 0, height: 0 },\n\n d3Zoom: null,\n d3Selection: null,\n d3Initialised: false,\n\n nodesSelectionActive: false,\n selectionActive: false,\n selection: {},\n\n connectionSourceId: null,\n connectionPosition: { x: 0, y: 0 },\n\n onConnect: () => {},\n\n ...actions\n});\n\nexport default store;\n","export const isFunction = obj => !!(obj && obj.constructor && obj.call && obj.apply);\n\nexport const isDefined = obj => typeof obj !== 'undefined';\n\nexport const inInputDOMNode = e => e && e.target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.nodeName);\n\nexport const getDimensions = (node = {}) => ({\n width: node.offsetWidth,\n height: node.offsetHeight\n});\n","import { zoomIdentity } from 'd3-zoom';\n\nimport store from '../store';\nimport { isDefined } from './index';\n\nexport const isEdge = element => element.source && element.target;\n\nexport const isNode = element => !element.source && !element.target;\n\nexport const getOutgoers = (node, elements) => {\n if (!isNode(node)) {\n return [];\n }\n\n const outgoerIds = elements.filter(e => e.source === node.id).map(e => e.target);\n return elements.filter(e => outgoerIds.includes(e.id));\n};\n\nexport const removeElements = (elementsToRemove, elements) => {\n const nodeIdsToRemove = elementsToRemove.map(n => n.id);\n\n return elements.filter(e => {\n return (\n !nodeIdsToRemove.includes(e.id) &&\n !nodeIdsToRemove.includes(e.target) &&\n !nodeIdsToRemove.includes(e.source)\n );\n });\n};\n\nfunction getEdgeId(params) {\n return `reactflow__edge-${params.source}-${params.target}`;\n}\n\nexport const addEdge = (edgeParams, elements) => {\n if (!edgeParams.source || !edgeParams.target) {\n throw new Error('Can not create edge. An edge needs a source and a target');\n }\n\n return elements.concat({\n ...edgeParams,\n id: isDefined(edgeParams.id) ? edgeParams.id : getEdgeId(edgeParams)\n });\n}\n\nconst pointToRendererPoint = ({ x, y }, transform) => {\n const rendererX = (x - transform[0]) * (1 / [transform[2]]);\n const rendererY = (y - transform[1]) * (1 / [transform[2]]);\n\n return {\n x: rendererX,\n y: rendererY\n };\n};\n\nexport const parseElement = (e, transform) => {\n if (!e.id) {\n throw new Error('All elements (nodes and edges) need to have an id.',)\n }\n\n if (isEdge(e)) {\n return {\n ...e,\n id: e.id.toString(),\n type: e.type || 'default'\n };\n }\n\n return {\n ...e,\n id: e.id.toString(),\n type: e.type || 'default',\n __rg: {\n position: pointToRendererPoint(e.position, transform),\n width: null,\n height: null,\n handleBounds : {}\n }\n };\n};\n\nexport const getBoundingBox = (nodes) => {\n const bbox = nodes.reduce((res, node) => {\n const { position } = node.__rg;\n const x2 = position.x + node.__rg.width;\n const y2 = position.y + node.__rg.height;\n\n if (position.x < res.minX) {\n res.minX = position.x;\n }\n\n if (x2 > res.maxX) {\n res.maxX = x2;\n }\n\n if (position.y < res.minY) {\n res.minY = position.y;\n }\n\n if (y2 > res.maxY) {\n res.maxY = y2;\n }\n\n return res;\n }, {\n minX: Number.MAX_VALUE,\n minY: Number.MAX_VALUE,\n maxX: 0,\n maxY: 0\n });\n\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY\n };\n};\n\nexport const graphPosToZoomedPos = (pos, transform) => {\n return {\n x: (pos.x * transform[2]) + transform[0],\n y: (pos.y * transform[2]) + transform[1]\n };\n}\n\nexport const getNodesInside = (nodes, bbox, transform = [0, 0, 1], partially = false) => {\n return nodes.\n filter(n => {\n const bboxPos = {\n x: (bbox.x - transform[0]) * (1 / transform[2]),\n y: (bbox.y - transform[1]) * (1 / transform[2])\n };\n const bboxWidth = bbox.width * (1 / transform[2]);\n const bboxHeight = bbox.height * (1 / transform[2]);\n const { position, width, height } = n.__rg;\n const nodeWidth = partially ? -width : width;\n const nodeHeight = partially ? 0 : height;\n const offsetX = partially ? width : 0;\n const offsetY = partially ? height : 0;\n\n return (\n (position.x + offsetX > bboxPos.x && (position.x + nodeWidth) < (bboxPos.x + bboxWidth)) &&\n (position.y + offsetY > bboxPos.y && (position.y + nodeHeight) < (bboxPos.y + bboxHeight))\n );\n });\n};\n\nexport const getConnectedEdges = (nodes, edges) => {\n const nodeIds = nodes.map(n => n.id);\n\n return edges.filter(e => {\n const hasSourceHandleId = e.source.includes('__');\n const hasTargetHandleId = e.target.includes('__');\n\n const sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source;\n const targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target;\n\n return nodeIds.includes(sourceId) || nodeIds.includes(targetId);\n });\n};\n\nexport const fitView = ({ padding = 0 } = {}) => {\n const state = store.getState();\n const bounds = getBoundingBox(state.nodes);\n const maxBoundsSize = Math.max(bounds.width, bounds.height);\n const k = Math.min(state.width, state.height) / (maxBoundsSize + (maxBoundsSize * padding));\n const boundsCenterX = bounds.x + (bounds.width / 2);\n const boundsCenterY = bounds.y + (bounds.height / 2);\n const transform = [(state.width / 2) - (boundsCenterX * k), (state.height / 2) - (boundsCenterY * k)];\n const fittedTransform = zoomIdentity.translate(transform[0], transform[1]).scale(k);\n\n state.d3Selection.call(state.d3Zoom.transform, fittedTransform);\n};\n\nexport const zoomIn = () => {\n const state = store.getState();\n state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] + 0.2);\n};\n\nexport const zoomOut = () => {\n const state = store.getState();\n state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] - 0.2);\n};\n\nexport default {\n isEdge,\n getBoundingBox,\n graphPosToZoomedPos,\n getConnectedEdges,\n parseElement,\n fitView,\n zoomIn,\n zoomOut\n};\n","import React, { memo } from 'react';\nimport { useStoreState } from 'easy-peasy';\n\nimport { isNode } from '../../utils/graph';\n\nfunction renderNode(d, props, state) {\n const nodeType = d.type || 'default';\n\n if (!props.nodeTypes[nodeType]) {\n console.warn(`No node type found for type \"${nodeType}\". Using fallback type \"default\".`);\n }\n\n const NodeComponent = props.nodeTypes[nodeType] || props.nodeTypes.default;\n const selected = state.selectedElements\n .filter(isNode)\n .map(e => e.id)\n .includes(d.id);\n\n return (\n \n );\n}\n\nconst NodeRenderer = memo((props) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n transform: s.transform,\n selectedElements: s.selectedElements\n }));\n\n const { transform, nodes } = state;\n const transformStyle = { transform : `translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})` };\n\n return (\n \n {nodes.map(d => renderNode(d, props, state))}\n \n );\n});\n\nNodeRenderer.displayName = 'NodeRenderer';\nNodeRenderer.whyDidYouRender = false;\n\nexport default NodeRenderer;\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React, { useEffect, useState } from 'react';\nimport cx from 'classnames';\n\nexport default (props) => {\n const [sourceNode, setSourceNode] = useState(null);\n const hasHandleId = props.connectionSourceId.includes('__');\n const sourceIdSplitted = props.connectionSourceId.split('__');\n const nodeId = sourceIdSplitted[0];\n const handleId = hasHandleId ? sourceIdSplitted[1] : null;\n\n useEffect(() => {\n setSourceNode(props.nodes.find(n => n.id === nodeId));\n }, []);\n\n if (!sourceNode) {\n return null;\n }\n\n const style = props.connectionLineStyle || {};\n const className = cx('react-flow__edge', 'connection', props.className);\n\n const sourceHandle = handleId ? sourceNode.__rg.handleBounds.source.find(d => d.id === handleId) : sourceNode.__rg.handleBounds.source[0];\n const sourceHandleX = sourceHandle ? sourceHandle.x + (sourceHandle.width / 2) : sourceNode.__rg.width / 2;\n const sourceHandleY = sourceHandle ? sourceHandle.y + (sourceHandle.height / 2) : sourceNode.__rg.height;\n const sourceX = sourceNode.__rg.position.x + sourceHandleX;\n const sourceY = sourceNode.__rg.position.y + sourceHandleY;\n\n const targetX = (props.connectionPositionX - props.transform[0]) * (1 / props.transform[2]);\n const targetY = (props.connectionPositionY - props.transform[1]) * (1 / props.transform[2]);\n\n let dAttr = '';\n\n if (props.connectionLineType === 'bezier') {\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n dAttr = `M${sourceX},${sourceY} C${sourceX},${centerY} ${targetX},${centerY} ${targetX},${targetY}`;\n } else {\n dAttr = `M${sourceX},${sourceY} ${targetX},${targetY}`;\n }\n\n return (\n \n \n \n );\n};\n","import React, { memo } from 'react';\nimport { useStoreState } from 'easy-peasy';\n\nimport ConnectionLine from '../../components/ConnectionLine';\nimport { isEdge } from '../../utils/graph';\n\nfunction getHandlePosition(position, node, handle = null) {\n if (!handle) {\n switch (position) {\n case 'top': return {\n x: node.__rg.width / 2,\n y: 0\n };\n case 'right': return {\n x: node.__rg.width,\n y: node.__rg.height / 2\n };\n case 'bottom': return {\n x: node.__rg.width / 2,\n y: node.__rg.height\n };\n case 'left': return {\n x: 0,\n y: node.__rg.height / 2\n };\n }\n }\n\n switch (position) {\n case 'top': return {\n x: handle.x + (handle.width / 2),\n y: handle.y\n };\n case 'right': return {\n x: handle.x + handle.width,\n y: handle.y + (handle.height / 2)\n };\n case 'bottom': return {\n x: handle.x + (handle.width / 2),\n y: handle.y + handle.height\n };\n case 'left': return {\n x: handle.x,\n y: handle.y + (handle.height / 2)\n };\n }\n}\n\nfunction getHandle(bounds, handleId) {\n let handle = null;\n\n if (!bounds) {\n return null;\n }\n\n // there is no handleId when there are no multiple handles/ handles with ids\n // so we just pick the first one\n if (bounds.length === 1 || !handleId) {\n handle = bounds[0];\n } else if (handleId) {\n handle = bounds.find(d => d.id === handleId);\n }\n\n return handle;\n}\n\nfunction getEdgePositions({ sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition }) {\n const sourceHandlePos = getHandlePosition(sourcePosition, sourceNode, sourceHandle)\n const sourceX = sourceNode.__rg.position.x + sourceHandlePos.x;\n const sourceY = sourceNode.__rg.position.y + sourceHandlePos.y;\n\n const targetHandlePos = getHandlePosition(targetPosition, targetNode, targetHandle);\n const targetX = targetNode.__rg.position.x + targetHandlePos.x;\n const targetY = targetNode.__rg.position.y + targetHandlePos.y;\n\n return {\n sourceX, sourceY, targetX, targetY\n };\n}\n\nfunction renderEdge(e, props, state) {\n const edgeType = e.type || 'default';\n\n const hasSourceHandleId = e.source.includes('__');\n const hasTargetHandleId = e.target.includes('__');\n\n const sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source;\n const targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target;\n\n const sourceHandleId = hasSourceHandleId ? e.source.split('__')[1] : null;\n const targetHandleId = hasTargetHandleId ? e.target.split('__')[1] : null;\n\n const sourceNode = state.nodes.find(n => n.id === sourceId);\n const targetNode = state.nodes.find(n => n.id === targetId);\n\n if (!sourceNode) {\n throw new Error(`couldn't create edge for source id: ${sourceId}`);\n }\n\n if (!targetNode) {\n throw new Error(`couldn't create edge for target id: ${targetId}`);\n }\n\n const EdgeComponent = props.edgeTypes[edgeType] || props.edgeTypes.default;\n const sourceHandle = getHandle(sourceNode.__rg.handleBounds.source, sourceHandleId);\n const targetHandle = getHandle(targetNode.__rg.handleBounds.target, targetHandleId);\n const sourcePosition = sourceHandle ? sourceHandle.position : 'bottom';\n const targetPosition = targetHandle ? targetHandle.position : 'top';\n\n const { sourceX, sourceY, targetX, targetY } = getEdgePositions({\n sourceNode, sourceHandle, sourcePosition,\n targetNode, targetHandle, targetPosition\n });\n const selected = state.selectedElements\n .filter(isEdge)\n .find(elm => elm.source === sourceId && elm.target === targetId);\n\n return (\n \n );\n}\n\nconst EdgeRenderer = memo((props) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n edges: s.edges,\n transform: s.transform,\n selectedElements: s.selectedElements,\n connectionSourceId: s.connectionSourceId,\n position: s.connectionPosition\n }));\n const {\n width, height, connectionLineStyle, connectionLineType\n } = props;\n\n if (!width) {\n return null;\n }\n\n const { transform, edges, nodes, connectionSourceId, position } = state;\n const transformStyle = `translate(${transform[0]},${transform[1]}) scale(${transform[2]})`;\n\n return (\n \n \n {edges.map(e => renderEdge(e, props, state))}\n {connectionSourceId && (\n \n )}\n \n \n );\n});\n\nEdgeRenderer.displayName = 'EdgeRenderer';\n\nexport default EdgeRenderer;\n","import React, { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useStoreState } from 'easy-peasy';\nimport classnames from 'classnames';\n\nconst baseStyles = {\n position: 'absolute',\n top: 0,\n left: 0\n};\n\nconst Grid = memo(({\n gap, strokeColor, strokeWidth, style,\n className\n}) => {\n const {\n width,\n height,\n transform: [x, y, scale],\n } = useStoreState(s => s);\n\n const gridClasses = classnames('react-flow__grid', className);\n const scaledGap = gap * scale;\n\n const xStart = x % scaledGap;\n const yStart = y % scaledGap;\n\n const lineCountX = Math.ceil(width / scaledGap) + 1;\n const lineCountY = Math.ceil(height / scaledGap) + 1;\n\n const xValues = Array.from({length: lineCountX}, (_, index) => `M${index * scaledGap + xStart} 0 V${height}`);\n const yValues = Array.from({length: lineCountY}, (_, index) => `M0 ${index * scaledGap + yStart} H${width}`);\n\n const path = [...xValues, ...yValues].join(' ');\n\n return (\n \n \n \n );\n});\n\nGrid.displayName = 'Grid';\n\nGrid.propTypes = {\n gap: PropTypes.number,\n strokeColor: PropTypes.string,\n strokeWidth: PropTypes.number,\n style: PropTypes.object,\n className: PropTypes.string\n};\n\nGrid.defaultProps = {\n gap: 24,\n strokeColor: '#999',\n strokeWidth:0.1,\n style: {},\n className: null\n};\n\nexport default Grid;\n","import React, { memo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Grid from './Grid';\n\nconst bgComponents = {\n grid: Grid\n};\n\nconst BackgroundRenderer = memo(({\n backgroundType, ...rest\n}) => {\n const BackgroundComponent = bgComponents[backgroundType];\n return \n});\n\nBackgroundRenderer.displayName = 'BackgroundRenderer';\n\nBackgroundRenderer.propTypes = {\n backgroundType: PropTypes.oneOf(['grid'])\n};\n\nBackgroundRenderer.defaultProps = {\n backgroundType: 'grid'\n};\n\nexport default BackgroundRenderer;\n","import React, { useEffect, useRef, useState, memo } from 'react';\nimport { useStoreActions } from 'easy-peasy';\n\nconst initialRect = {\n startX: 0,\n startY: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n draw: false\n};\n\nfunction getMousePosition(evt) {\n const containerBounds = document.querySelector('.react-flow').getBoundingClientRect();\n\n return {\n x: evt.clientX - containerBounds.left,\n y: evt.clientY - containerBounds.top,\n };\n}\n\nexport default memo(() => {\n const selectionPane = useRef(null);\n const [rect, setRect] = useState(initialRect);\n const setSelection = useStoreActions(a => a.setSelection);\n const updateSelection = useStoreActions(a => a.updateSelection);\n const setNodesSelection = useStoreActions(a => a.setNodesSelection);\n\n useEffect(() => {\n function onMouseDown(evt) {\n const mousePos = getMousePosition(evt);\n\n setRect((currentRect) => ({\n ...currentRect,\n startX: mousePos.x,\n startY: mousePos.y,\n x: mousePos.x,\n y: mousePos.y,\n draw: true\n }));\n\n setSelection(true);\n }\n\n function onMouseMove(evt) {\n setRect((currentRect) => {\n if (!currentRect.draw) {\n return currentRect;\n }\n\n const mousePos = getMousePosition(evt);\n const negativeX = mousePos.x < currentRect.startX;\n const negativeY = mousePos.y < currentRect.startY;\n const nextRect = {\n ...currentRect,\n x: negativeX ? mousePos.x : currentRect.x,\n y: negativeY ? mousePos.y : currentRect.y,\n width: negativeX ? currentRect.startX - mousePos.x : mousePos.x - currentRect.startX,\n height: negativeY ? currentRect.startY - mousePos.y : mousePos.y - currentRect.startY,\n };\n\n updateSelection(nextRect);\n\n return nextRect;\n });\n }\n\n function onMouseUp() {\n setRect((currentRect) => {\n setNodesSelection({ isActive: true, selection: currentRect });\n setSelection(false);\n\n return {\n ...currentRect,\n draw: false\n };\n });\n }\n\n selectionPane.current.addEventListener('mousedown', onMouseDown);\n selectionPane.current.addEventListener('mousemove', onMouseMove);\n selectionPane.current.addEventListener('mouseup', onMouseUp);\n\n return () => {\n selectionPane.current.removeEventListener('mousedown', onMouseDown);\n selectionPane.current.removeEventListener('mousemove', onMouseMove);\n selectionPane.current.removeEventListener('mouseup', onMouseUp);\n };\n }, []);\n\n return (\n \n {(rect.draw || rect.fixed) && (\n \n )}\n \n );\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findInArray = findInArray;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\nexports.int = int;\nexports.dontSetMe = dontSetMe;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPrefix = getPrefix;\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix(prop\n/*: string*/\n= 'transform')\n/*: string*/\n{\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n const style = window.document.documentElement.style;\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n let out = '';\n let shouldCapitalize = true;\n\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n\n return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = getPrefix();\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.addEvent = addEvent;\nexports.removeEvent = removeEvent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTranslation = getTranslation;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nexports.styleHacks = styleHacks;\nexports.addClassName = addClassName;\nexports.removeClassName = removeClassName;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nlet matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n } // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n\n\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n let node = el;\n\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n} // Get from offsetParent\n\n\nfunction offsetXYFromParent(evt\n/*: {clientX: number, clientY: number}*/\n, offsetParent\n/*: HTMLElement*/\n)\n/*: ControlPosition*/\n{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n return {\n x,\n y\n };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\n\nfunction getTranslation({\n x,\n y\n}\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n let translation = `translate(${x}${unitSuffix},${y}${unitSuffix})`;\n\n if (positionOffset) {\n const defaultX = `${typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix}`;\n const defaultY = `${typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix}`;\n translation = `translate(${defaultX}, ${defaultY})` + translation;\n }\n\n return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n }\n } catch (e) {// probably IE\n }\n}\n\nfunction styleHacks(childStyle\n/*: Object*/\n= {})\n/*: Object*/\n{\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBoundPosition = getBoundPosition;\nexports.snapToGrid = snapToGrid;\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.getControlPosition = getControlPosition;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\n\nvar _shims = require(\"./shims\");\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./domFns\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n } // Keep x and y below right and bottom limits...\n\n\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n const node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent);\n} // Create an data object exposed by 's events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n const state = draggable.state;\n const isStart = !(0, _shims.isNum)(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX,\n deltaY: y - state.lastY,\n lastX: state.lastX,\n lastY: state.lastY,\n x,\n y\n };\n }\n} // Create an data exposed by 's events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n const scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n const node = _reactDom.default.findDOMNode(draggable);\n\n if (!node) {\n throw new Error(': Unmounted during event!');\n } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log(...args) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n}; // Default to mouse events.\n\nlet dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};*/\n\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};*/\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nclass DraggableCore extends _react.default.Component {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN,\n lastY: NaN,\n touchIdentifier: null\n });\n\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e); // Only accept left-clicks.\n\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n\n const {\n ownerDocument\n } = thisNode; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n return;\n } // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n\n\n const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.setState({\n touchIdentifier\n }); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n\n const {\n x,\n y\n } = position; // Create an event object with all the data parents need to make a decision here.\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return; // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n\n this.setState({\n dragging: true,\n lastX: x,\n lastY: y\n }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n\n _defineProperty(this, \"handleDrag\", e => {\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault(); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position; // Snap to grid if prop has been provided\n\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX,\n deltaY = y - this.state.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents')\n /*: any*/\n )\n /*: MouseTouchEvent*/\n ); // I see why this insanity was deprecated\n // $FlowIgnore\n\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n });\n\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.state.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {\n x,\n y\n } = position;\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n }); // Call event handler\n\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n });\n\n _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n\n _defineProperty(this, \"onTouchStart\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onTouchEnd\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStop(e);\n });\n }\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return _react.default.cloneElement(_react.default.Children.only(this.props.children), {\n style: (0, _domFns.styleHacks)(this.props.children.props.style),\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n\n}\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props\n /*: DraggableCoreProps*/\n , propName\n /*: $Keys*/\n ) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {}\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Define \n//\nclass Draggable extends _react.default.Component {\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps({\n position\n }\n /*: DraggableProps*/\n , {\n prevPropsPosition\n }\n /*: DraggableState*/\n ) {\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: { ...position\n }\n };\n }\n\n return null;\n }\n\n constructor(props\n /*: DraggableProps*/\n ) {\n super(props);\n\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState\n /*: $Shape*/\n = {\n x: uiData.x,\n y: uiData.y\n }; // Keep within bounds.\n\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n newState.x += this.state.slackX;\n newState.y += this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n } // Short-circuit if user's callback killed it.\n\n\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n const shouldStop = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldStop === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState\n /*: $Shape*/\n = {\n dragging: false,\n slackX: 0,\n slackY: 0\n }; // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n const controlled = Boolean(this.props.position);\n\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n });\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: { ...props.position\n },\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , 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.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && _reactDom.default.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n\n componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\n\n render()\n /*: ReactElement*/\n {\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n }; // If this element was SVG, we use the `transform` attribute.\n\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n } // Mark with class while dragging\n\n\n const className = (0, _classnames.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n }); // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n return _react.default.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), _react.default.cloneElement(_react.default.Children.only(children), {\n className: className,\n style: { ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n\n}\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", { // Accepts all props accepts.\n ..._DraggableCore.default.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(Draggable, \"defaultProps\", { ..._DraggableCore.default.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n position: null,\n scale: 1\n});","var Draggable = require('./build/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./build/DraggableCore').default;\n","import React, { useState, memo } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport { isNode } from '../../utils/graph';\n\nfunction getStartPositions(elements) {\n return elements\n .filter(isNode)\n .reduce((res, node) => {\n const startPosition = {\n x: node.__rg.position.x || node.position.x,\n y: node.__rg.position.y || node.position.x\n };\n\n res[node.id] = startPosition;\n\n return res;\n }, {});\n}\n\nexport default memo(() => {\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [startPositions, setStartPositions] = useState({});\n const state = useStoreState(s => ({\n transform: s.transform,\n selectedNodesBbox: s.selectedNodesBbox,\n selectedElements: s.selectedElements\n }));\n const updateNodePos = useStoreActions(a => a.updateNodePos);\n const [x, y, k] = state.transform;\n const position = state.selectedNodesBbox;\n\n const onStart = (evt) => {\n const scaledClient = {\n x: evt.clientX * (1 / k),\n y: evt.clientY * (1 / k)\n };\n const offsetX = scaledClient.x - position.x - x;\n const offsetY = scaledClient.y - position.y - y;\n const startPositions = getStartPositions(state.selectedElements);\n\n setOffset({ x: offsetX, y: offsetY });\n setStartPositions(startPositions);\n };\n\n const onDrag = (evt) => {\n const scaledClient = {\n x: evt.clientX * (1 / k),\n y: evt.clientY * (1 / k)\n };\n\n state.selectedElements.filter(isNode).forEach(node => {\n updateNodePos({ id: node.id, pos: {\n x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - x ,\n y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - y\n }});\n });\n };\n\n return (\n \n \n \n \n \n );\n});\n","import { useState, useEffect } from 'react';\n\nimport { inInputDOMNode } from '../utils';\n\nexport default function useKeyPress(keyCode) {\n const [keyPressed, setKeyPressed] = useState(false);\n\n function downHandler(evt) {\n if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) {\n setKeyPressed(true);\n }\n }\n\n const upHandler = (evt) => {\n if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) {\n setKeyPressed(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', downHandler);\n window.addEventListener('keyup', upHandler);\n return () => {\n window.removeEventListener('keydown', downHandler);\n window.removeEventListener('keyup', upHandler);\n };\n }, []);\n\n return keyPressed;\n}\n","import { useEffect } from 'react';\nimport * as d3Zoom from 'd3-zoom';\nimport { select, event } from 'd3-selection';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nconst d3ZoomInstance = d3Zoom\n .zoom()\n .scaleExtent([0.5, 2])\n .filter(() => !event.button);\n\nexport default function useD3Zoom(zoomPane, onMove, shiftPressed) {\n const state = useStoreState(s => ({\n transform: s.transform,\n d3Selection: s.d3Selection,\n d3Zoom: s.d3Zoom,\n edges: s.edged,\n d3Initialised: s.d3Initialised,\n nodesSelectionActive: s.nodesSelectionActive\n }));\n\n const initD3 = useStoreActions(actions => actions.initD3);\n const updateTransform = useStoreActions(actions => actions.updateTransform);\n\n useEffect(() => {\n const selection = select(zoomPane.current).call(d3ZoomInstance);\n initD3({ zoom: d3ZoomInstance, selection });\n }, []);\n\n useEffect(() => {\n if (shiftPressed) {\n d3ZoomInstance.on('zoom', null);\n } else {\n d3ZoomInstance.on('zoom', () => {\n if (event.sourceEvent && event.sourceEvent.target !== zoomPane.current) {\n return false;\n }\n\n updateTransform(event.transform);\n\n onMove();\n });\n\n if (state.d3Selection) {\n // we need to restore the graph transform otherwise d3 zoom transform and graph transform are not synced\n const graphTransform = d3Zoom.zoomIdentity\n .translate(state.transform[0], state.transform[1])\n .scale(state.transform[2]);\n\n state.d3Selection.call(state.d3Zoom.transform, graphTransform);\n }\n }\n\n return () => {\n d3ZoomInstance.on('zoom', null);\n };\n }, [shiftPressed]);\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","import React, { useEffect, useRef, memo } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport NodeRenderer from '../NodeRenderer';\nimport EdgeRenderer from '../EdgeRenderer';\nimport BackgroundRenderer from '../BackgroundRenderer';\nimport UserSelection from '../../components/UserSelection';\nimport NodesSelection from '../../components/NodesSelection';\nimport useKeyPress from '../../hooks/useKeyPress';\nimport useD3Zoom from '../../hooks/useD3Zoom';\nimport useGlobalKeyHandler from '../../hooks/useGlobalKeyHandler';\nimport useElementUpdater from '../../hooks/useElementUpdater'\nimport { getDimensions } from '../../utils';\nimport { fitView, zoomIn, zoomOut } from '../../utils/graph';\n\nconst GraphView = memo(({\n nodeTypes, edgeTypes, onMove, onLoad,\n onElementClick, onNodeDragStop, connectionLineType, connectionLineStyle,\n selectionKeyCode, onElementsRemove, deleteKeyCode, elements,\n showBackground, backgroundGap, backgroundColor, backgroundType,\n onConnect\n}) => {\n const zoomPane = useRef();\n const rendererNode = useRef();\n const state = useStoreState(s => ({\n width: s.width,\n height: s.height,\n nodes: s.nodes,\n edges: s.edges,\n d3Initialised: s.d3Initialised,\n nodesSelectionActive: s.nodesSelectionActive\n }));\n const updateSize = useStoreActions(actions => actions.updateSize);\n const setNodesSelection = useStoreActions(actions => actions.setNodesSelection);\n const setOnConnect = useStoreActions(a => a.setOnConnect);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n\n const onZoomPaneClick = () => setNodesSelection({ isActive: false });\n\n const updateDimensions = () => {\n const size = getDimensions(rendererNode.current);\n updateSize(size);\n };\n\n useEffect(() => {\n updateDimensions();\n setOnConnect(onConnect);\n window.onresize = updateDimensions;\n\n return () => {\n window.onresize = null;\n };\n }, []);\n\n useD3Zoom(zoomPane, onMove, selectionKeyPressed);\n\n useEffect(() => {\n if (state.d3Initialised) {\n onLoad({\n fitView,\n zoomIn,\n zoomOut\n });\n }\n }, [state.d3Initialised]);\n\n useGlobalKeyHandler({ onElementsRemove, deleteKeyCode });\n useElementUpdater({ elements });\n\n return (\n
\n {showBackground && (\n \n )}\n \n \n {selectionKeyPressed && }\n {state.nodesSelectionActive && }\n \n
\n );\n});\n\nGraphView.displayName = 'GraphView';\n\nexport default GraphView;\n","import { useEffect } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport useKeyPress from './useKeyPress';\nimport { isEdge, getConnectedEdges } from '../utils/graph';\n\nexport default ({ deleteKeyCode, onElementsRemove }) => {\n const state = useStoreState(s => ({ selectedElements: s.selectedElements, edges: s.edges }))\n const setNodesSelection = useStoreActions(a => a.setNodesSelection);\n const deleteKeyPressed = useKeyPress(deleteKeyCode);\n\n useEffect(() => {\n if (deleteKeyPressed && state.selectedElements.length) {\n let elementsToRemove = state.selectedElements;\n\n // we also want to remove the edges if only one node is selected\n if (state.selectedElements.length === 1 && !isEdge(state.selectedElements[0])) {\n const connectedEdges = getConnectedEdges(state.selectedElements, state.edges);\n elementsToRemove = [...state.selectedElements, ...connectedEdges];\n }\n\n onElementsRemove(elementsToRemove);\n setNodesSelection({ isActive: false });\n }\n }, [deleteKeyPressed])\n\n return null;\n};\n","import { useEffect } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\nimport isEqual from 'fast-deep-equal';\n\nimport { parseElement, isNode, isEdge } from '../utils/graph';\n\nconst useElementUpdater = ({ elements }) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n edges: s.edges,\n transform: s.transform\n }));\n\n const setNodes = useStoreActions(a => a.setNodes);\n const setEdges = useStoreActions(a => a.setEdges);\n\n useEffect(() => {\n const nodes = elements.filter(isNode);\n const edges = elements.filter(isEdge).map(parseElement);\n\n const nextNodes = nodes.map(propNode => {\n const existingNode = state.nodes.find(n => n.id === propNode.id);\n\n if (existingNode) {\n const data = !isEqual(existingNode.data, propNode.data) ?\n { ...existingNode.data, ...propNode.data } : existingNode.data;\n\n return {\n ...existingNode,\n data\n };\n }\n\n return parseElement(propNode, state.transform);\n });\n\n const nodesChanged = !isEqual(state.nodes, nextNodes);\n const edgesChanged = !isEqual(state.edges, edges);\n\n if (nodesChanged) {\n setNodes(nextNodes);\n }\n\n if (edgesChanged) {\n setEdges(edges);\n }\n });\n\n return null;\n};\n\nexport default useElementUpdater;\n","import React, { memo } from 'react';\nimport cx from 'classnames';\n\nfunction onMouseDown(evt, { nodeId, setSourceId, setPosition, onConnect, isTarget, isValidConnection }) {\n const containerBounds = document.querySelector('.react-flow').getBoundingClientRect();\n let recentHoveredHandle = null;\n\n setPosition({\n x: evt.clientX - containerBounds.x,\n y: evt.clientY - containerBounds.y,\n });\n setSourceId(nodeId);\n\n function resetRecentHandle() {\n if (recentHoveredHandle) {\n recentHoveredHandle.classList.remove('valid');\n recentHoveredHandle.classList.remove('connecting');\n }\n }\n\n // checks if element below mouse is a handle and returns connection in form of an object { source: 123, target: 312 }\n function checkElementBelowIsValid(evt) {\n const elementBelow = document.elementFromPoint(evt.clientX, evt.clientY);\n const result = {\n elementBelow,\n isValid: false,\n connection: null,\n isHoveringHandle: false\n };\n\n if (elementBelow && (elementBelow.classList.contains('target') || elementBelow.classList.contains('source'))) {\n let connection = null;\n\n if (isTarget) {\n const sourceId = elementBelow.getAttribute('data-nodeid');\n connection = { source: sourceId, target: nodeId };\n } else {\n const targetId = elementBelow.getAttribute('data-nodeid');\n connection = { source: nodeId, target: targetId };\n }\n\n const isValid = isValidConnection(connection);\n\n result.connection = connection;\n result.isValid = isValid;\n result.isHoveringHandle = true;\n }\n\n return result;\n }\n\n function onMouseMove(evt) {\n setPosition({\n x: evt.clientX - containerBounds.x,\n y: evt.clientY - containerBounds.y,\n });\n\n const { connection, elementBelow, isValid, isHoveringHandle } = checkElementBelowIsValid(evt);\n\n if (!isHoveringHandle) {\n return resetRecentHandle();\n }\n\n const isOwnHandle = connection.source === connection.target;\n\n if (!isOwnHandle) {\n recentHoveredHandle = elementBelow;\n elementBelow.classList.add('connecting');\n elementBelow.classList.toggle('valid', isValid);\n }\n }\n\n function onMouseUp(evt) {\n const { connection, isValid } = checkElementBelowIsValid(evt);\n\n if (isValid) {\n onConnect(connection);\n }\n\n resetRecentHandle();\n setSourceId(null);\n\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n }\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp)\n}\n\nconst BaseHandle = memo(({\n type, nodeId, onConnect, position,\n setSourceId, setPosition, className,\n id = false, isValidConnection, ...rest\n}) => {\n const isTarget = type === 'target';\n const handleClasses = cx(\n 'react-flow__handle',\n className,\n position,\n { source: !isTarget, target: isTarget }\n );\n\n const nodeIdWithHandleId = id ? `${nodeId}__${id}` : nodeId;\n\n return (\n onMouseDown(evt, {\n nodeId: nodeIdWithHandleId, setSourceId, setPosition,\n onConnect, isTarget, isValidConnection\n })}\n {...rest}\n />\n );\n});\n\nBaseHandle.displayName = 'BaseHandle';\nBaseHandle.whyDidYouRender = false;\n\nexport default BaseHandle;\n","import { createContext } from 'react';\n\nexport const NodeIdContext = createContext(null);\nexport const Provider = NodeIdContext.Provider;\nexport const Consumer = NodeIdContext.Consumer;\n\nProvider.displayName = 'NodeIdProvider';\n\nexport default NodeIdContext;\n","import React, { memo, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { useStoreActions, useStoreState } from 'easy-peasy';\n\nimport BaseHandle from './BaseHandle';\nimport NodeIdContext from '../../contexts/NodeIdContext'\n\nconst Handle = memo(({ onConnect, ...rest }) => {\n const nodeId = useContext(NodeIdContext);\n const { setPosition, setSourceId } = useStoreActions(a => ({\n setPosition: a.setConnectionPosition,\n setSourceId: a.setConnectionSourceId\n }));\n const onConnectAction = useStoreState(s => s.onConnect);\n const onConnectExtended = (params) => {\n onConnectAction(params);\n onConnect(params);\n };\n\n return (\n \n );\n});\n\nHandle.displayName = 'Handle';\n\nHandle.propTypes = {\n type: PropTypes.oneOf(['source', 'target']),\n position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n onConnect: PropTypes.func,\n isValidConnection: PropTypes.func\n};\n\nHandle.defaultProps = {\n type: 'source',\n position: 'top',\n onConnect: () => {},\n isValidConnection: () => true\n};\n\nexport default Handle;\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#ff6060',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n \n {data.label}\n \n
\n);\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#9999ff',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n {data.label}\n \n
\n);\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#55dd99',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n \n {data.label}\n
\n);\n","import React, { useEffect, useRef, useState, memo } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport cx from 'classnames';\n\nimport { getDimensions, inInputDOMNode } from '../../utils';\nimport { Provider } from '../../contexts/NodeIdContext';\nimport store from '../../store';\n\nconst isHandle = e => (\n e.target.className &&\n e.target.className.includes &&\n (e.target.className.includes('source') || e.target.className.includes('target'))\n);\n\nconst hasResizeObserver = !!window.ResizeObserver;\n\nconst getHandleBounds = (sel, nodeElement, parentBounds, k) => {\n const handles = nodeElement.querySelectorAll(sel);\n\n if (!handles || !handles.length) {\n return null;\n }\n\n return [].map.call(handles, (handle) => {\n const bounds = handle.getBoundingClientRect();\n const dimensions = getDimensions(handle);\n const nodeIdAttr = handle.getAttribute('data-nodeid');\n const handlePosition = handle.getAttribute('data-handlepos');\n const nodeIdSplitted = nodeIdAttr.split('__');\n\n let handleId = null;\n\n if (nodeIdSplitted) {\n handleId = nodeIdSplitted.length ? nodeIdSplitted[1] : nodeIdSplitted;\n }\n\n return {\n id: handleId,\n position: handlePosition,\n x: (bounds.x - parentBounds.x) * (1 / k),\n y: (bounds.y - parentBounds.y) * (1 / k),\n ...dimensions\n };\n });\n};\n\nconst onStart = (evt, { setOffset, onClick, id, type, data, position, transform }) => {\n if (inInputDOMNode(evt) || isHandle(evt)) {\n return false;\n }\n\n const scaledClient = {\n x: evt.clientX * (1 / [transform[2]]),\n y: evt.clientY * (1 / [transform[2]])\n };\n const offsetX = scaledClient.x - position.x - transform[0];\n const offsetY = scaledClient.y - position.y - transform[1];\n const node = { id, type, position, data };\n\n store.dispatch.setSelectedElements({ id, type });\n setOffset({ x: offsetX, y: offsetY });\n onClick(node);\n};\n\nconst onDrag = (evt, { setDragging, id, offset, transform }) => {\n const scaledClient = {\n x: evt.clientX * (1 / transform[2]),\n y: evt.clientY * (1 / transform[2])\n };\n\n setDragging(true);\n store.dispatch.updateNodePos({ id, pos: {\n x: scaledClient.x - transform[0] - offset.x,\n y: scaledClient.y - transform[1] - offset.y\n }});\n};\n\nconst onStop = ({ onNodeDragStop, setDragging, isDragging, id, type, position, data }) => {\n if (!isDragging) {\n return false;\n }\n\n setDragging(false);\n onNodeDragStop({\n id, type, position, data\n });\n};\n\nexport default NodeComponent => {\n const NodeWrapper = memo((props) => {\n const nodeElement = useRef(null);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [isDragging, setDragging] = useState(false);\n const {\n id, type, data, transform, xPos, yPos, selected,\n onClick, onNodeDragStop, style\n } = props;\n\n const position = { x: xPos, y: yPos };\n const nodeClasses = cx('react-flow__node', { selected });\n const nodeStyle = { zIndex: selected ? 10 : 3, transform: `translate(${xPos}px,${yPos}px)` };\n\n const updateNode = () => {\n const storeState = store.getState()\n const bounds = nodeElement.current.getBoundingClientRect();\n const dimensions = getDimensions(nodeElement.current);\n const handleBounds = {\n source: getHandleBounds('.source', nodeElement.current, bounds, storeState.transform[2]),\n target: getHandleBounds('.target', nodeElement.current, bounds, storeState.transform[2])\n };\n store.dispatch.updateNodeData({ id, ...dimensions, handleBounds });\n }\n\n useEffect(() => {\n updateNode();\n\n let resizeObserver = null;\n\n if (hasResizeObserver) {\n resizeObserver = new ResizeObserver(entries => {\n for (let entry of entries) {\n updateNode();\n }\n });\n\n resizeObserver.observe(nodeElement.current);\n }\n\n return () => {\n if (hasResizeObserver && resizeObserver) {\n resizeObserver.unobserve(nodeElement.current);\n }\n }\n }, []);\n\n return (\n onStart(evt, { onClick, id, type, data, setOffset, transform, position })}\n onDrag={evt => onDrag(evt, { setDragging, id, offset, transform })}\n onStop={() => onStop({ onNodeDragStop, isDragging, setDragging, id, type, position, data })}\n scale={transform[2]}\n >\n \n \n \n \n \n \n );\n });\n\n NodeWrapper.displayName = 'NodeWrapper';\n NodeWrapper.whyDidYouRender = false;\n\n return NodeWrapper;\n};\n","import React, { memo } from 'react';\n\nexport default memo(({\n sourceX, sourceY, targetX, targetY,\n sourcePosition, targetPosition, style = {}\n}) => {\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n let dAttr = `M${sourceX},${sourceY} C${sourceX},${centerY} ${targetX},${centerY} ${targetX},${targetY}`;\n\n if (['left', 'right'].includes(sourcePosition) && ['left', 'right'].includes(targetPosition)) {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n\n dAttr = `M${sourceX},${sourceY} C${centerX},${sourceY} ${centerX},${targetY} ${targetX},${targetY}`;\n } else if (['left', 'right'].includes(sourcePosition) || ['left', 'right'].includes(targetPosition)) {\n dAttr = `M${sourceX},${sourceY} C${sourceX},${targetY} ${sourceX},${targetY} ${targetX},${targetY}`;\n }\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\n\nexport default memo((props) => {\n const {\n sourceX, sourceY, targetX, targetY, style = {}\n } = props;\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\n\nexport default memo((props) => {\n const {\n sourceX, sourceY, targetX, targetY, style = {}\n } = props;\n\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\nimport cx from 'classnames';\n\nimport { inInputDOMNode } from '../../utils';\nimport store from '../../store';\n\nexport default EdgeComponent => {\n const EdgeWrapper = memo((props) => {\n const {\n id, source, target, type,\n animated, selected, onClick\n } = props;\n const edgeClasses = cx('react-flow__edge', { selected, animated });\n const onEdgeClick = (evt) => {\n if (inInputDOMNode(evt)) {\n return false;\n }\n\n store.dispatch.setSelectedElements({ id, source, target });\n onClick({ id, source, target, type });\n };\n\n return (\n \n \n \n );\n });\n\n EdgeWrapper.displayName = 'EdgeWrapper';\n EdgeWrapper.whyDidYouRender = false;\n\n return EdgeWrapper;\n};\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { StoreProvider } from 'easy-peasy';\n\nif (process.env.NODE_ENV !== 'production') {\n const whyDidYouRender = require('@welldone-software/why-did-you-render');\n whyDidYouRender(React);\n}\n\nimport GraphView from '../GraphView';\nimport DefaultNode from '../../components/Nodes/DefaultNode';\nimport InputNode from '../../components/Nodes/InputNode';\nimport OutputNode from '../../components/Nodes/OutputNode';\nimport { createNodeTypes } from '../NodeRenderer/utils';\nimport BezierEdge from '../../components/Edges/BezierEdge';\nimport StraightEdge from '../../components/Edges/StraightEdge';\nimport StepEdge from '../../components/Edges/StepEdge';\nimport { createEdgeTypes } from '../EdgeRenderer/utils';\nimport store from '../../store';\n\nimport '../../style.css';\n\nconst ReactFlow = ({\n style, onElementClick, elements, children,\n nodeTypes, edgeTypes, onLoad, onMove,\n onElementsRemove, onConnect, onNodeDragStop, connectionLineType,\n connectionLineStyle, deleteKeyCode, selectionKeyCode,\n showBackground, backgroundGap, backgroundType, backgroundColor\n}) => {\n const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []);\n const edgeTypesParsed = useMemo(() => createEdgeTypes(edgeTypes), []);\n\n return (\n
\n \n \n {children}\n \n
\n );\n};\n\nReactFlow.displayName = 'ReactFlow';\n\nReactFlow.propTypes = {\n onElementClick: PropTypes.func,\n onElementsRemove: PropTypes.func,\n onNodeDragStop: PropTypes.func,\n onConnect: PropTypes.func,\n\tonLoad: PropTypes.func,\n onMove: PropTypes.func,\n nodeTypes: PropTypes.object,\n edgeTypes: PropTypes.object,\n connectionLineType: PropTypes.string,\n connectionLineStyle: PropTypes.object,\n deleteKeyCode: PropTypes.number,\n selectionKeyCode: PropTypes.number,\n gridColor: PropTypes.string,\n gridGap: PropTypes.number,\n showBackground: PropTypes.bool,\n backgroundType: PropTypes.oneOf(['grid'])\n};\n\nReactFlow.defaultProps = {\n onElementClick: () => {},\n onElementsRemove: () => {},\n onNodeDragStop: () => {},\n onConnect: () => {},\n\tonLoad: () => {},\n onMove: () => {},\n nodeTypes: {\n input: InputNode,\n default: DefaultNode,\n output: OutputNode\n },\n edgeTypes: {\n default: BezierEdge,\n straight: StraightEdge,\n step: StepEdge\n },\n connectionLineType: 'bezier',\n connectionLineStyle: {},\n deleteKeyCode: 8,\n selectionKeyCode: 16,\n backgroundColor: '#999',\n backgroundGap: 24,\n showBackground: true,\n backgroundType: 'grid'\n};\n\nexport default ReactFlow;\n","import DefaultNode from '../../components/Nodes/DefaultNode';\nimport InputNode from '../../components/Nodes/InputNode';\nimport OutputNode from '../../components/Nodes/OutputNode';\nimport wrapNode from '../../components/Nodes/wrapNode';\n\nexport function createNodeTypes(nodeTypes) {\n const standardTypes = {\n input: wrapNode(nodeTypes.input || InputNode),\n default: wrapNode(nodeTypes.default || DefaultNode),\n output: wrapNode(nodeTypes.output || OutputNode)\n };\n\n const specialTypes = Object\n .keys(nodeTypes)\n .filter(k => !['input', 'default', 'output'].includes(k))\n .reduce((res, key) => {\n res[key] = wrapNode(nodeTypes[key] || DefaultNode);\n\n return res;\n }, {});\n\n return {\n ...standardTypes,\n ...specialTypes\n };\n}\n","import StraightEdge from '../../components/Edges/StraightEdge';\nimport BezierEdge from '../../components/Edges/BezierEdge';\nimport wrapEdge from '../../components/Edges/wrapEdge';\n\nexport function createEdgeTypes(edgeTypes) {\n const standardTypes = {\n default: wrapEdge(edgeTypes.default || BezierEdge),\n straight: wrapEdge(edgeTypes.bezier || StraightEdge)\n };\n\n const specialTypes = Object\n .keys(edgeTypes)\n .filter(k => !['default', 'bezier'].includes(k))\n .reduce((res, key) => {\n res[key] = wrapEdge(edgeTypes[key] ||BezierEdge);\n\n return res;\n }, {});\n\n return {\n ...standardTypes,\n ...specialTypes\n };\n}\n","import React, { useRef, useEffect } from 'react';\nimport { useStoreState } from 'easy-peasy';\nimport classnames from 'classnames';\n\nimport { isFunction } from '../../utils'\nimport { getNodesInside } from '../../utils/graph';\n\nconst baseStyle = {\n position: 'absolute',\n zIndex: 5,\n bottom: 10,\n right: 10,\n width: 200\n};\n\nexport default ({ style = {}, className, bgColor = '#f8f8f8', nodeColor = '#ddd' }) => {\n const canvasNode = useRef(null);\n const state = useStoreState(s => ({\n width: s.width,\n height: s.height,\n nodes: s.nodes,\n transform: s.transform,\n })); const mapClasses = classnames('react-flow__minimap', className);\n const nodePositions = state.nodes.map(n => n.__rg.position);\n const width = style.width || baseStyle.width;\n const height = (state.height / (state.width || 1)) * width;\n const bbox = { x: 0, y: 0, width: state.width, height: state.height };\n const scaleFactor = width / state.width;\n const nodeColorFunc = isFunction(nodeColor) ? nodeColor : () => nodeColor;\n\n useEffect(() => {\n if (canvasNode) {\n const ctx = canvasNode.current.getContext('2d');\n const nodesInside = getNodesInside(state.nodes, bbox, state.transform, true);\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, width, height);\n\n nodesInside.forEach((n) => {\n const pos = n.__rg.position;\n const transformX = state.transform[0];\n const transformY = state.transform[1];\n const x = (pos.x * state.transform[2]) + transformX;\n const y = (pos.y * state.transform[2]) + transformY;\n\n ctx.fillStyle = nodeColorFunc(n);\n\n ctx.fillRect(\n (x * scaleFactor),\n (y * scaleFactor),\n n.__rg.width * scaleFactor * state.transform[2],\n n.__rg.height * scaleFactor * state.transform[2]\n );\n });\n }\n }, [nodePositions, state.transform, height])\n\n return (\n \n );\n}\n","import React from 'react';\nimport classnames from 'classnames';\n\nimport { fitView, zoomIn, zoomOut } from '../../utils/graph';\nimport plusIcon from '../../../assets/icons/plus.svg';\nimport minusIcon from '../../../assets/icons/minus.svg';\nimport fitviewIcon from '../../../assets/icons/fitview.svg';\n\nconst baseStyle = {\n position: 'absolute',\n zIndex: 5,\n bottom: 10,\n left: 10,\n};\n\nexport default ({ style, className }) => {\n const mapClasses = classnames('react-flow__controls', className);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n"],"names":["obj","NOTHING","Symbol","DRAFTABLE","for","DRAFT_STATE","isDraft","value","isDraftable","Array","isArray","proto","Object","getPrototypeOf","prototype","constructor","assign","target","key","has","ownKeys","Reflect","getOwnPropertySymbols","getOwnPropertyNames","concat","shallowCopy","base","invokeGetters","slice","clone","create","forEach","desc","getOwnPropertyDescriptor","get","call","enumerable","defineProperty","writable","configurable","each","cb","i","length","isEnumerable","prop","thing","hasOwnProperty","is","x","y","ImmerScope","parent","this","drafts","canAutoFreeze","patches","revoke","draft","usePatches","patchListener","inversePatches","leave","current","enter","descriptors","createProxy","clonePotentialDraft","state","assertUnrevoked","peek","source","finalizing","prepareCopy","copy","set","assigned","modified","markChanged","proxyProperty","scope","finalized","revoke$1","revoked","push","Error","JSON","stringify","markChangesSweep","hasArrayChanges","hasObjectChanges","keys","baseValue","undefined","state$1","descriptor","legacyProxy","freeze","willFinalize","result","isReplaced","markChangesRecursively","object","i$1","i$2","createProxy$1","ref","Proxy","revocable","arrayTraps","objectTraps","proxy","source$1","peek$1","markChanged$1","deleteProperty","owner","setPrototypeOf","fn","arguments","apply","isNaN","parseInt","modernProxy","generatePatches","basePath","assign$1","delta","start","end","path","op","useRemove","replaceCount","path$1","generateArrayPatches","assignedValue","origValue","generateObjectPatches","applyPatches","patch","join","splice","configDefaults","useProxies","autoFreeze","process","env","NODE_ENV","name","onAssign","onDelete","onCopy","Immer","config","setUseProxies","produce","bind","recipe","this$1","defaultBase","self","args","len","hasError","Promise","then","processResult","error","createDraft","isManual","finishDraft","setAutoFreeze","baseDraft","finalize","isFrozen","finalizeTree","root","rootPath","needPatches","finalizeProperty","isDraftProp","immer","observable","ponyfill","window","global","module","Function","randomString","Math","random","toString","substring","split","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","subscribe","listener","isSubscribed","index","indexOf","dispatch","action","isPlainObject","type","listeners","replaceReducer","nextReducer","$$observable","_ref","outerSubscribe","observer","TypeError","observeState","next","unsubscribe","_defineProperty","enumerableOnly","filter","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","compose","_len","funcs","_key","arg","reduce","a","b","applyMiddleware","middlewares","store","_dispatch","middlewareAPI","chain","map","middleware","isCrushed","createThunkMiddleware","extraArgument","message","console","e","warning","thunk","Similar","list","lastItem","size","withExtraArgument","isEqual","val","delete","callback","thisArg","val1","val2","forceSimilar","Map","require$$0","limit","cache","MapOrSimilar","FORCE_SIMILAR_INSTEAD_OF_MAP","lru","memoizerific","newMap","fnResult","currentCache","argsLengthMinusOne","lruPath","isMemoized","numArgs","cacheItem","moveToMostRecentLru","removeCachedResult","shift","wasMemoized","isMatch","ii","lruLen","lruPathLen","removedLru","tmp","removedLruLen","currentLru","StoreContext","createContext","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","Context","useStoreState","mapState","useContext","mapStateRef","useRef","stateRef","mountedRef","subscriptionMapStateError","forceRender","useReducer","s","err","errorMessage","stack","checkMapState","newState","useStoreActions","mapActions","getActions","createStoreActionsHook","_extends","actionSymbol","actionOnSymbol","computedSymbol","reducerSymbol","thunkOnSymbol","thunkSymbol","isStateObject","acc","cur","idx","newify","currentPath","finalValue","createStoreInternals","disableImmer","initialState","injections","model","reducerEnhancer","references","simpleProduce","_current","defaultState","actionCreatorDict","actionCreators","actionReducersDict","actionThunks","computedProperties","customReducers","listenerActionCreators","listenerActionMap","listenerDefinitions","computedState","isInReducer","recursiveExtractDefsFromModel","parentPath","meta","handleValueAsState","initialParentRef","actionMeta","actionName","actionCreator","payload","actionDefinition","resolvedTargets","_type","thunkMeta","thunkHandler","helpers","getStoreActions","getStoreState","startType","successType","failType","_actionCreator","dispatchError","dispatchSuccess","resolved","catch","computedMeta","memoisedResultFn","createComputedProperty","o","storeState","warn","inputs","stateResolvers","resolver","listenerActionOrThunk","listenerMeta","targets","targetResolver","targetTypes","targetType","listenerReg","reducerForActions","actionReducer","runActionReducerAtPath","stateAfterActions","red","reducerForCustomReducers","_ref3","StoreProvider","children","React","createElement","Provider","noop","t","n","_","Dispatch","parseTypenames","typenames","types","trim","c","on","typename","T","that","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElementNS","creatorFixed","fullname","namespace","none","selector","querySelector","empty","querySelectorAll","matches","update","EnterNode","datum","_next","_parent","__data__","appendChild","child","insertBefore","keyPrefix","bindIndex","group","exit","data","node","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","NaN","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","getAttribute","classedAdd","names","add","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","lower","previousSibling","firstChild","constantNull","removeChild","selection_cloneShallow","cloneNode","selection_cloneDeep","contains","filterEvents","event","mouseenter","mouseleave","filterContextListener","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","__on","j","m","removeEventListener","capture","onAdd","wrap","d","addEventListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","Selection","groups","parents","_groups","_parents","selection","sourceEvent","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","left","clientLeft","top","clientTop","changedTouches","touches","identifier","touch","preventDefault","stopImmediatePropagation","factory","extend","definition","Color","select","subgroups","subnode","subgroup","selectAll","selectorAll","match","matcher","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","sparse","onenter","onupdate","onexit","append","merge","order","groups0","groups1","m0","m1","min","merges","group0","group1","sort","compare","compareNode","sortgroups","sortgroup","nodes","attr","getAttributeNS","property","classed","text","html","creator","insert","before","deep","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","l","toLowerCase","exec","rgbn","Rgb","rgba","hsla","r","g","opacity","rgb_formatHex","hex","rgb_formatRgb","max","round","h","Hsl","hslConvert","hsl2rgb","m2","gamma","nogamma","pow","exponential","constant","linear","define","channels","displayable","formatHsl","brighter","k","darker","rgbGamma","colorRgb","reA","reB","am","bm","bs","bi","lastIndex","q","number","one","zero","cssNode","cssRoot","cssView","svgNode","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","f","sqrt","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","transform","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","rho","SQRT2","rho2","rho4","epsilon2","cosh","exp","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","log","d1","b0","b1","r0","r1","coshr0","u","sinh","duration","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","stop","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","id","timing","schedules","__transition","tween","tick","ease","init","schedule","active","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","interpolateNumber","interpolateRgb","interpolateString","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","removeFunction","easeConstant","resolve","reject","cancel","interrupt","defaultTiming","ZoomEvent","Transform","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","range","rescaleY","nopropagation","defaultFilter","ctrlKey","button","defaultExtent","SVGElement","hasAttribute","viewBox","width","height","clientWidth","clientHeight","defaultTransform","__zoom","defaultWheelDelta","deltaY","deltaMode","defaultTouchable","navigator","maxTouchPoints","defaultConstrain","extent","translateExtent","dx0","dx1","dy0","dy1","equal","flags","valueOf","setOnConnect","onConnect","setNodes","setEdges","edges","updateNodeData","__rg","updateNodePos","pos","position","setSelection","isActive","selectionActive","setNodesSelection","nodesSelectionActive","selectedElements","selectedNodes","getNodesInside","selectedNodesBbox","getBoundingBox","setSelectedElements","elements","selectedElementsArr","updateSelection","selectedEdges","getConnectedEdges","nextSelectedElements","selectedElementsUpdated","updateTransform","updateSize","initD3","zoom","d3Zoom","d3Selection","d3Initialised","setConnectionPosition","connectionPosition","setConnectionSourceId","sourceId","connectionSourceId","options","_options","compose$1","_options$devTools","devTools","_options$disableImmer","_options$enhancers","enhancers","_options$initialState","_options$middleware","_options$mockActions","mockActions","_options$name","storeName","_options$reducerEnhan","rootReducer","bindReplaceState","modelDef","easyPeasyReplaceState","modelDefinition","mockedActions","bindStoreInternals","internals","easyPeasyMiddleware","reduxThunk","sourceAction","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","createStore$1","bindActionCreators","actionsKey","rebindStore","removeKey","addModel","modelForKey","removeModel","clearMockedActions","getListeners","getMockedActions","reconfigure","newModel","actions","isDefined","inInputDOMNode","includes","nodeName","getDimensions","offsetWidth","offsetHeight","isEdge","element","isNode","pointToRendererPoint","parseElement","handleBounds","bbox","res","x2","y2","minX","maxX","minY","maxY","Number","MAX_VALUE","partially","bboxPos","bboxWidth","bboxHeight","nodeWidth","nodeHeight","offsetX","offsetY","nodeIds","hasSourceHandleId","hasTargetHandleId","targetId","fitView","padding","bounds","maxBoundsSize","boundsCenterX","boundsCenterY","fittedTransform","zoomIdentity","zoomIn","scaleTo","zoomOut","NodeRenderer","memo","props","transformStyle","className","nodeType","nodeTypes","NodeComponent","selected","xPos","yPos","onClick","onElementClick","onNodeDragStop","renderNode","displayName","whyDidYouRender","hasOwn","classNames","classes","argType","inner","exports","default","useState","sourceNode","setSourceNode","hasHandleId","sourceIdSplitted","nodeId","handleId","find","connectionLineStyle","cx","sourceHandle","sourceHandleX","sourceHandleY","sourceX","sourceY","targetX","connectionPositionX","targetY","connectionPositionY","dAttr","connectionLineType","yOffset","abs","centerY","getHandlePosition","handle","getHandle","renderEdge","edgeType","sourceHandleId","targetHandleId","targetNode","EdgeComponent","edgeTypes","targetHandle","sourcePosition","targetPosition","sourceHandlePos","targetHandlePos","getEdgePositions","elm","animated","EdgeRenderer","ConnectionLine","baseStyles","Grid","gap","strokeColor","strokeWidth","gridClasses","classnames","scaledGap","xStart","yStart","lineCountX","ceil","lineCountY","xValues","from","yValues","fill","stroke","propTypes","PropTypes","defaultProps","bgComponents","grid","BackgroundRenderer","backgroundType","rest","BackgroundComponent","oneOf","initialRect","startX","startY","draw","getMousePosition","evt","containerBounds","selectionPane","setRect","onMouseDown","mousePos","currentRect","onMouseMove","negativeX","negativeY","nextRect","onMouseUp","fixed","array","func","num","propName","componentName","getPrefix","browserPrefixToKey","prefixes","str","out","shouldCapitalize","toUpperCase","kebabToTitleCase","_default","matchesSelector","el","baseNode","handler","attachEvent","detachEvent","computedStyle","_shims","int","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","paddingTop","paddingBottom","paddingLeft","paddingRight","offsetParent","offsetParentRect","body","scrollLeft","scrollTop","controlPos","positionOffset","translation","getTranslation","[object Object]","_getPrefix","targetTouches","findInArray","doc","styleEl","getElementById","getElementsByTagName","addClassName","removeClassName","getSelection","removeAllRanges","childStyle","touchAction","__esModule","newObj","_interopRequireWildcard","matchesSelectorFunc","method","isFunction","unitSuffix","replace","draggable","right","bottom","cloneBounds","findDOMNode","ownerWindow","boundNode","HTMLElement","nodeStyle","boundNodeStyle","offsetLeft","marginLeft","offsetTop","marginTop","_domFns","innerWidth","outerWidth","marginRight","innerHeight","outerHeight","marginBottom","isNum","pendingX","pendingY","axis","touchIdentifier","draggableCore","touchObj","getTouch","offsetXYFromParent","isStart","lastX","deltaX","lastY","coreData","_reactDom","_interopRequireDefault","DRAGGABLE_DEBUG","_react","_propTypes","require$$1","require$$2","_log","require$$3","eventsFor","move","mouse","dragEventFor","DraggableCore","Component","super","dragging","allowAnyClick","thisNode","disabled","Node","matchesSelectorAndParentsTo","getTouchIdentifier","setState","_positionFns","getControlPosition","coreEvent","createCoreData","onStart","enableUserSelectHack","addUserSelectStyles","addEvent","handleDrag","handleDragStop","snapToGrid","onDrag","MouseEvent","initMouseEvent","removeUserSelectStyles","onStop","removeEvent","handleDragStart","cloneElement","Children","only","styleHacks","onTouchStart","onTouchEnd","bool","arrayOf","dontSetMe","_classnames","_DraggableCore","require$$4","require$$5","Draggable","prevPropsPosition","createDraggableData","dragged","uiData","slackX","slackY","newStateX","newStateY","getBoundPosition","Boolean","defaultPosition","isElementSVG","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","draggableCoreProps","svgTransform","validPosition","transformOpts","canDragX","canDragY","createSVGTransform","createCSSTransform","onDragStart","onDragStop","oneOfType","shape","offset","setOffset","startPositions","setStartPositions","ReactDraggable","scaledClient","startPosition","useKeyPress","keyCode","keyPressed","setKeyPressed","downHandler","upHandler","d3ZoomInstance","touchstarting","touchending","constrain","wheelDelta","touchable","scaleExtent","interpolateZoom","touchDelay","wheelDelay","clickDistance2","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","centroid","gesture","p","w","clean","__zooming","Gesture","taps","wheel","noevent","view","moved","x0","y0","noclick","MozUserSelect","__noselect","dragEnable","dragDisable","k1","shiftKey","started","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","k0","translateBy","translateTo","emit","customEvent","clickDistance","GraphView","onMove","onLoad","selectionKeyCode","onElementsRemove","deleteKeyCode","showBackground","backgroundGap","backgroundColor","zoomPane","rendererNode","selectionKeyPressed","updateDimensions","onresize","shiftPressed","edged","graphTransform","useD3Zoom","deleteKeyPressed","elementsToRemove","connectedEdges","useGlobalKeyHandler","nextNodes","propNode","existingNode","nodesChanged","edgesChanged","useElementUpdater","UserSelection","NodesSelection","BaseHandle","setSourceId","setPosition","isValidConnection","isTarget","handleClasses","nodeIdWithHandleId","recentHoveredHandle","resetRecentHandle","checkElementBelowIsValid","elementBelow","elementFromPoint","isValid","connection","isHoveringHandle","toggle","NodeIdContext","Consumer","Handle","onConnectAction","nodeStyles","background","borderRadius","label","hasResizeObserver","ResizeObserver","getHandleBounds","sel","nodeElement","parentBounds","handles","dimensions","nodeIdAttr","handlePosition","nodeIdSplitted","NodeWrapper","isDragging","setDragging","nodeClasses","zIndex","updateNode","resizeObserver","entries","observe","unobserve","xOffset","centerX","EdgeWrapper","edgeClasses","require","ReactFlow","nodeTypesParsed","useMemo","input","wrapNode","InputNode","DefaultNode","output","OutputNode","createNodeTypes","edgeTypesParsed","wrapEdge","BezierEdge","straight","bezier","StraightEdge","createEdgeTypes","gridColor","gridGap","step","StepEdge","baseStyle","mapClasses","src","bgColor","nodeColor","canvasNode","nodePositions","scaleFactor","nodeColorFunc","ctx","getContext","nodesInside","fillStyle","fillRect","transformX","transformY","edgeParams","outgoerIds","nodeIdsToRemove"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ReactFlow.min.js","sources":["../node_modules/immer-peasy/dist/immer.module.js","../node_modules/symbol-observable/es/index.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/redux/es/redux.js","../node_modules/redux-thunk/es/index.js","../node_modules/map-or-similar/src/similar.js","../node_modules/map-or-similar/src/map-or-similar.js","../node_modules/memoizerific/src/memoizerific.js","../node_modules/easy-peasy/dist/easy-peasy.esm.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/point.js","../node_modules/d3-selection/src/mouse.js","../node_modules/d3-selection/src/touch.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js","../node_modules/fast-deep-equal/index.js","../src/store/actions.js","../src/store/index.js","../src/utils/index.js","../src/utils/graph.js","../src/container/NodeRenderer/index.js","../node_modules/classnames/index.js","../src/components/ConnectionLine/index.js","../src/container/EdgeRenderer/index.js","../src/container/BackgroundRenderer/Grid.js","../src/container/BackgroundRenderer/index.js","../src/components/UserSelection/index.js","../node_modules/react-draggable/build/utils/shims.js","../node_modules/react-draggable/build/utils/getPrefix.js","../node_modules/react-draggable/build/utils/domFns.js","../node_modules/react-draggable/build/utils/positionFns.js","../node_modules/react-draggable/build/utils/log.js","../node_modules/react-draggable/build/DraggableCore.js","../node_modules/react-draggable/build/Draggable.js","../node_modules/react-draggable/index.js","../src/components/NodesSelection/index.js","../src/hooks/useKeyPress.js","../src/hooks/useD3Zoom.js","../node_modules/d3-drag/src/nodrag.js","../src/container/GraphView/index.js","../src/hooks/useGlobalKeyHandler.js","../src/hooks/useElementUpdater.js","../src/components/Handle/BaseHandle.js","../src/contexts/NodeIdContext.js","../src/components/Handle/index.js","../src/components/Nodes/DefaultNode.js","../src/components/Nodes/InputNode.js","../src/components/Nodes/OutputNode.js","../src/components/Nodes/wrapNode.js","../src/components/Edges/BezierEdge.js","../src/components/Edges/StraightEdge.js","../src/components/Edges/StepEdge.js","../src/components/Edges/wrapEdge.js","../src/container/ReactFlow/index.js","../src/container/NodeRenderer/utils.js","../src/container/EdgeRenderer/utils.js"],"sourcesContent":["var obj;\nvar NOTHING = typeof Symbol !== \"undefined\" ? Symbol(\"immer-nothing\") : ( obj = {}, obj[\"immer-nothing\"] = true, obj );\nvar DRAFTABLE = typeof Symbol !== \"undefined\" && Symbol.for ? Symbol.for(\"immer-draftable\") : \"__$immer_draftable\";\nvar DRAFT_STATE = typeof Symbol !== \"undefined\" && Symbol.for ? Symbol.for(\"immer-state\") : \"__$immer_state\";\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value || typeof value !== \"object\") { return false; }\n if (Array.isArray(value)) { return true; }\n var proto = Object.getPrototypeOf(value);\n if (!proto || proto === Object.prototype) { return true; }\n return !!value[DRAFTABLE] || !!value.constructor[DRAFTABLE];\n}\nfunction original(value) {\n if (value && value[DRAFT_STATE]) {\n return value[DRAFT_STATE].base;\n } // otherwise return undefined\n\n}\nvar assign = Object.assign || function assign(target, value) {\n for (var key in value) {\n if (has(value, key)) {\n target[key] = value[key];\n }\n }\n\n return target;\n};\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : typeof Object.getOwnPropertySymbols !== \"undefined\" ? function (obj) { return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj)); } : Object.getOwnPropertyNames;\nfunction shallowCopy(base, invokeGetters) {\n if ( invokeGetters === void 0 ) invokeGetters = false;\n\n if (Array.isArray(base)) { return base.slice(); }\n var clone = Object.create(Object.getPrototypeOf(base));\n ownKeys(base).forEach(function (key) {\n if (key === DRAFT_STATE) {\n return; // Never copy over draft state.\n }\n\n var desc = Object.getOwnPropertyDescriptor(base, key);\n var value = desc.value;\n\n if (desc.get) {\n if (invokeGetters) {\n value = desc.get.call(base);\n }\n }\n\n if (desc.enumerable) {\n clone[key] = value;\n } else if (invokeGetters) {\n Object.defineProperty(clone, key, {\n value: value,\n writable: true,\n configurable: true\n });\n }\n });\n return clone;\n}\nfunction each(value, cb) {\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) { cb(i, value[i], value); }\n } else {\n ownKeys(value).forEach(function (key) { return cb(key, value[key], value); });\n }\n}\nfunction isEnumerable(base, prop) {\n var desc = Object.getOwnPropertyDescriptor(base, prop);\n return !!desc && desc.enumerable;\n}\nfunction has(thing, prop) {\n return Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction is(x, y) {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\n/** Each scope represents a `produce` call. */\n\nvar ImmerScope = function ImmerScope(parent) {\n this.drafts = [];\n this.parent = parent; // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n\n this.canAutoFreeze = true; // To avoid prototype lookups:\n\n this.patches = null;\n};\n\nImmerScope.prototype.usePatches = function usePatches (patchListener) {\n if (patchListener) {\n this.patches = [];\n this.inversePatches = [];\n this.patchListener = patchListener;\n }\n};\n\nImmerScope.prototype.revoke = function revoke$1 () {\n this.leave();\n this.drafts.forEach(revoke);\n this.drafts = null; // Make draft-related methods throw.\n};\n\nImmerScope.prototype.leave = function leave () {\n if (this === ImmerScope.current) {\n ImmerScope.current = this.parent;\n }\n};\nImmerScope.current = null;\n\nImmerScope.enter = function () {\n return this.current = new ImmerScope(this.current);\n};\n\nfunction revoke(draft) {\n draft[DRAFT_STATE].revoke();\n}\n\n// but share them all instead\n\nvar descriptors = {};\nfunction willFinalize(scope, result, isReplaced) {\n scope.drafts.forEach(function (draft) {\n draft[DRAFT_STATE].finalizing = true;\n });\n\n if (!isReplaced) {\n if (scope.patches) {\n markChangesRecursively(scope.drafts[0]);\n } // This is faster when we don't care about which attributes changed.\n\n\n markChangesSweep(scope.drafts);\n } // When a child draft is returned, look for changes.\n else if (isDraft(result) && result[DRAFT_STATE].scope === scope) {\n markChangesSweep(scope.drafts);\n }\n}\nfunction createProxy(base, parent) {\n var isArray = Array.isArray(base);\n var draft = clonePotentialDraft(base);\n each(draft, function (prop) {\n proxyProperty(draft, prop, isArray || isEnumerable(base, prop));\n }); // See \"proxy.js\" for property documentation.\n\n var scope = parent ? parent.scope : ImmerScope.current;\n var state = {\n scope: scope,\n modified: false,\n finalizing: false,\n // es5 only\n finalized: false,\n assigned: {},\n parent: parent,\n base: base,\n draft: draft,\n copy: null,\n revoke: revoke$1,\n revoked: false // es5 only\n\n };\n createHiddenProperty(draft, DRAFT_STATE, state);\n scope.drafts.push(draft);\n return draft;\n}\n\nfunction revoke$1() {\n this.revoked = true;\n}\n\nfunction source(state) {\n return state.copy || state.base;\n} // Access a property without creating an Immer draft.\n\n\nfunction peek(draft, prop) {\n var state = draft[DRAFT_STATE];\n\n if (state && !state.finalizing) {\n state.finalizing = true;\n var value = draft[prop];\n state.finalizing = false;\n return value;\n }\n\n return draft[prop];\n}\n\nfunction get(state, prop) {\n assertUnrevoked(state);\n var value = peek(source(state), prop);\n if (state.finalizing) { return value; } // Create a draft if the value is unmodified.\n\n if (value === peek(state.base, prop) && isDraftable(value)) {\n prepareCopy(state);\n return state.copy[prop] = createProxy(value, state);\n }\n\n return value;\n}\n\nfunction set(state, prop, value) {\n assertUnrevoked(state);\n state.assigned[prop] = true;\n\n if (!state.modified) {\n if (is(value, peek(source(state), prop))) { return; }\n markChanged(state);\n prepareCopy(state);\n }\n\n state.copy[prop] = value;\n}\n\nfunction markChanged(state) {\n if (!state.modified) {\n state.modified = true;\n if (state.parent) { markChanged(state.parent); }\n }\n}\n\nfunction prepareCopy(state) {\n if (!state.copy) { state.copy = clonePotentialDraft(state.base); }\n}\n\nfunction clonePotentialDraft(base) {\n var state = base && base[DRAFT_STATE];\n\n if (state) {\n state.finalizing = true;\n var draft = shallowCopy(state.draft, true);\n state.finalizing = false;\n return draft;\n }\n\n return shallowCopy(base);\n}\n\nfunction proxyProperty(draft, prop, enumerable) {\n var desc = descriptors[prop];\n\n if (desc) {\n desc.enumerable = enumerable;\n } else {\n descriptors[prop] = desc = {\n configurable: true,\n enumerable: enumerable,\n\n get: function get$1() {\n return get(this[DRAFT_STATE], prop);\n },\n\n set: function set$1(value) {\n set(this[DRAFT_STATE], prop, value);\n }\n\n };\n }\n\n Object.defineProperty(draft, prop, desc);\n}\n\nfunction assertUnrevoked(state) {\n if (state.revoked === true) { throw new Error(\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + JSON.stringify(source(state))); }\n} // This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\n\nfunction markChangesSweep(drafts) {\n // The natural order of drafts in the `scope` array is based on when they\n // were accessed. By processing drafts in reverse natural order, we have a\n // better chance of processing leaf nodes first. When a leaf node is known to\n // have changed, we can avoid any traversal of its ancestor nodes.\n for (var i = drafts.length - 1; i >= 0; i--) {\n var state = drafts[i][DRAFT_STATE];\n\n if (!state.modified) {\n if (Array.isArray(state.base)) {\n if (hasArrayChanges(state)) { markChanged(state); }\n } else if (hasObjectChanges(state)) { markChanged(state); }\n }\n }\n}\n\nfunction markChangesRecursively(object) {\n if (!object || typeof object !== \"object\") { return; }\n var state = object[DRAFT_STATE];\n if (!state) { return; }\n var base = state.base;\n var draft = state.draft;\n var assigned = state.assigned;\n\n if (!Array.isArray(object)) {\n // Look for added keys.\n Object.keys(draft).forEach(function (key) {\n // The `undefined` check is a fast path for pre-existing keys.\n if (base[key] === undefined && !has(base, key)) {\n assigned[key] = true;\n markChanged(state);\n } else if (!assigned[key]) {\n // Only untouched properties trigger recursion.\n markChangesRecursively(draft[key]);\n }\n }); // Look for removed keys.\n\n Object.keys(base).forEach(function (key) {\n // The `undefined` check is a fast path for pre-existing keys.\n if (draft[key] === undefined && !has(draft, key)) {\n assigned[key] = false;\n markChanged(state);\n }\n });\n } else if (hasArrayChanges(state)) {\n markChanged(state);\n assigned.length = true;\n\n if (draft.length < base.length) {\n for (var i = draft.length; i < base.length; i++) { assigned[i] = false; }\n } else {\n for (var i$1 = base.length; i$1 < draft.length; i$1++) { assigned[i$1] = true; }\n }\n\n for (var i$2 = 0; i$2 < draft.length; i$2++) {\n // Only untouched indices trigger recursion.\n if (assigned[i$2] === undefined) { markChangesRecursively(draft[i$2]); }\n }\n }\n}\n\nfunction hasObjectChanges(state) {\n var base = state.base;\n var draft = state.draft; // Search for added keys and changed keys. Start at the back, because\n // non-numeric keys are ordered by time of definition on the object.\n\n var keys = Object.keys(draft);\n\n for (var i = keys.length - 1; i >= 0; i--) {\n var key = keys[i];\n var baseValue = base[key]; // The `undefined` check is a fast path for pre-existing keys.\n\n if (baseValue === undefined && !has(base, key)) {\n return true;\n } // Once a base key is deleted, future changes go undetected, because its\n // descriptor is erased. This branch detects any missed changes.\n else {\n var value = draft[key];\n var state$1 = value && value[DRAFT_STATE];\n\n if (state$1 ? state$1.base !== baseValue : !is(value, baseValue)) {\n return true;\n }\n }\n } // At this point, no keys were added or changed.\n // Compare key count to determine if keys were deleted.\n\n\n return keys.length !== Object.keys(base).length;\n}\n\nfunction hasArrayChanges(state) {\n var draft = state.draft;\n if (draft.length !== state.base.length) { return true; } // See #116\n // If we first shorten the length, our array interceptors will be removed.\n // If after that new items are added, result in the same original length,\n // those last items will have no intercepting property.\n // So if there is no own descriptor on the last position, we know that items were removed and added\n // N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n // the last one\n\n var descriptor = Object.getOwnPropertyDescriptor(draft, draft.length - 1); // descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\n if (descriptor && !descriptor.get) { return true; } // For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\n return false;\n}\n\nfunction createHiddenProperty(target, prop, value) {\n Object.defineProperty(target, prop, {\n value: value,\n enumerable: false,\n writable: true\n });\n}\n\nvar legacyProxy = /*#__PURE__*/Object.freeze({\n willFinalize: willFinalize,\n createProxy: createProxy\n});\n\nfunction willFinalize$1() {}\nfunction createProxy$1(base, parent) {\n var scope = parent ? parent.scope : ImmerScope.current;\n var state = {\n // Track which produce call this is associated with.\n scope: scope,\n // True for both shallow and deep changes.\n modified: false,\n // Used during finalization.\n finalized: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned: {},\n // The parent draft state.\n parent: parent,\n // The base state.\n base: base,\n // The base proxy.\n draft: null,\n // Any property proxies.\n drafts: {},\n // The base copy with any updated values.\n copy: null,\n // Called by the `produce` function.\n revoke: null\n };\n var ref = Array.isArray(base) ? // [state] is used for arrays, to make sure the proxy is array-ish and not violate invariants,\n // although state itself is an object\n Proxy.revocable([state], arrayTraps) : Proxy.revocable(state, objectTraps);\n var revoke = ref.revoke;\n var proxy = ref.proxy;\n state.draft = proxy;\n state.revoke = revoke;\n scope.drafts.push(proxy);\n return proxy;\n}\nvar objectTraps = {\n get: get$1,\n\n has: function has(target, prop) {\n return prop in source$1(target);\n },\n\n ownKeys: function ownKeys(target) {\n return Reflect.ownKeys(source$1(target));\n },\n\n set: set$1,\n deleteProperty: deleteProperty,\n getOwnPropertyDescriptor: getOwnPropertyDescriptor,\n\n defineProperty: function defineProperty() {\n throw new Error(\"Object.defineProperty() cannot be used on an Immer draft\"); // prettier-ignore\n },\n\n getPrototypeOf: function getPrototypeOf(target) {\n return Object.getPrototypeOf(target.base);\n },\n\n setPrototypeOf: function setPrototypeOf() {\n throw new Error(\"Object.setPrototypeOf() cannot be used on an Immer draft\"); // prettier-ignore\n }\n\n};\nvar arrayTraps = {};\neach(objectTraps, function (key, fn) {\n arrayTraps[key] = function () {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\n\narrayTraps.deleteProperty = function (state, prop) {\n if (isNaN(parseInt(prop))) {\n throw new Error(\"Immer only supports deleting array indices\"); // prettier-ignore\n }\n\n return objectTraps.deleteProperty.call(this, state[0], prop);\n};\n\narrayTraps.set = function (state, prop, value) {\n if (prop !== \"length\" && isNaN(parseInt(prop))) {\n throw new Error(\"Immer only supports setting array indices and the 'length' property\"); // prettier-ignore\n }\n\n return objectTraps.set.call(this, state[0], prop, value);\n}; // returns the object we should be reading the current value from, which is base, until some change has been made\n\n\nfunction source$1(state) {\n return state.copy || state.base;\n} // Access a property without creating an Immer draft.\n\n\nfunction peek$1(draft, prop) {\n var state = draft[DRAFT_STATE];\n var desc = Reflect.getOwnPropertyDescriptor(state ? source$1(state) : draft, prop);\n return desc && desc.value;\n}\n\nfunction get$1(state, prop) {\n if (prop === DRAFT_STATE) { return state; }\n var drafts = state.drafts; // Check for existing draft in unmodified state.\n\n if (!state.modified && has(drafts, prop)) {\n return drafts[prop];\n }\n\n var value = source$1(state)[prop];\n\n if (state.finalized || !isDraftable(value)) {\n return value;\n } // Check for existing draft in modified state.\n\n\n if (state.modified) {\n // Assigned values are never drafted. This catches any drafts we created, too.\n if (value !== peek$1(state.base, prop)) { return value; } // Store drafts on the copy (when one exists).\n\n drafts = state.copy;\n }\n\n return drafts[prop] = createProxy$1(value, state);\n}\n\nfunction set$1(state, prop, value) {\n if (!state.modified) {\n var baseValue = peek$1(state.base, prop); // Optimize based on value's truthiness. Truthy values are guaranteed to\n // never be undefined, so we can avoid the `in` operator. Lastly, truthy\n // values may be drafts, but falsy values are never drafts.\n\n var isUnchanged = value ? is(baseValue, value) || value === state.drafts[prop] : is(baseValue, value) && prop in state.base;\n if (isUnchanged) { return true; }\n markChanged$1(state);\n }\n\n state.assigned[prop] = true;\n state.copy[prop] = value;\n return true;\n}\n\nfunction deleteProperty(state, prop) {\n // The `undefined` check is a fast path for pre-existing keys.\n if (peek$1(state.base, prop) !== undefined || prop in state.base) {\n state.assigned[prop] = false;\n markChanged$1(state);\n }\n\n if (state.copy) { delete state.copy[prop]; }\n return true;\n} // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n// the same guarantee in ES5 mode.\n\n\nfunction getOwnPropertyDescriptor(state, prop) {\n var owner = source$1(state);\n var desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n\n if (desc) {\n desc.writable = true;\n desc.configurable = !Array.isArray(owner) || prop !== \"length\";\n }\n\n return desc;\n}\n\nfunction markChanged$1(state) {\n if (!state.modified) {\n state.modified = true;\n state.copy = assign(shallowCopy(state.base), state.drafts);\n state.drafts = null;\n if (state.parent) { markChanged$1(state.parent); }\n }\n}\n\nvar modernProxy = /*#__PURE__*/Object.freeze({\n willFinalize: willFinalize$1,\n createProxy: createProxy$1\n});\n\nfunction generatePatches(state, basePath, patches, inversePatches) {\n Array.isArray(state.base) ? generateArrayPatches(state, basePath, patches, inversePatches) : generateObjectPatches(state, basePath, patches, inversePatches);\n}\n\nfunction generateArrayPatches(state, basePath, patches, inversePatches) {\n var assign, assign$1;\n\n var base = state.base;\n var copy = state.copy;\n var assigned = state.assigned; // Reduce complexity by ensuring `base` is never longer.\n\n if (copy.length < base.length) {\n (assign = [copy, base], base = assign[0], copy = assign[1]);\n (assign$1 = [inversePatches, patches], patches = assign$1[0], inversePatches = assign$1[1]);\n }\n\n var delta = copy.length - base.length; // Find the first replaced index.\n\n var start = 0;\n\n while (base[start] === copy[start] && start < base.length) {\n ++start;\n } // Find the last replaced index. Search from the end to optimize splice patches.\n\n\n var end = base.length;\n\n while (end > start && base[end - 1] === copy[end + delta - 1]) {\n --end;\n } // Process replaced indices.\n\n\n for (var i = start; i < end; ++i) {\n if (assigned[i] && copy[i] !== base[i]) {\n var path = basePath.concat([i]);\n patches.push({\n op: \"replace\",\n path: path,\n value: copy[i]\n });\n inversePatches.push({\n op: \"replace\",\n path: path,\n value: base[i]\n });\n }\n }\n\n var useRemove = end != base.length;\n var replaceCount = patches.length; // Process added indices.\n\n for (var i$1 = end + delta - 1; i$1 >= end; --i$1) {\n var path$1 = basePath.concat([i$1]);\n patches[replaceCount + i$1 - end] = {\n op: \"add\",\n path: path$1,\n value: copy[i$1]\n };\n\n if (useRemove) {\n inversePatches.push({\n op: \"remove\",\n path: path$1\n });\n }\n } // One \"replace\" patch reverses all non-splicing \"add\" patches.\n\n\n if (!useRemove) {\n inversePatches.push({\n op: \"replace\",\n path: basePath.concat([\"length\"]),\n value: base.length\n });\n }\n}\n\nfunction generateObjectPatches(state, basePath, patches, inversePatches) {\n var base = state.base;\n var copy = state.copy;\n each(state.assigned, function (key, assignedValue) {\n var origValue = base[key];\n var value = copy[key];\n var op = !assignedValue ? \"remove\" : key in base ? \"replace\" : \"add\";\n if (origValue === value && op === \"replace\") { return; }\n var path = basePath.concat(key);\n patches.push(op === \"remove\" ? {\n op: op,\n path: path\n } : {\n op: op,\n path: path,\n value: value\n });\n inversePatches.push(op === \"add\" ? {\n op: \"remove\",\n path: path\n } : op === \"remove\" ? {\n op: \"add\",\n path: path,\n value: origValue\n } : {\n op: \"replace\",\n path: path,\n value: origValue\n });\n });\n}\n\nfunction applyPatches(draft, patches) {\n for (var i = 0; i < patches.length; i++) {\n var patch = patches[i];\n var path = patch.path;\n\n if (path.length === 0 && patch.op === \"replace\") {\n draft = patch.value;\n } else {\n var base = draft;\n\n for (var i$1 = 0; i$1 < path.length - 1; i$1++) {\n base = base[path[i$1]];\n if (!base || typeof base !== \"object\") { throw new Error(\"Cannot apply patch, path doesn't resolve: \" + path.join(\"/\")); } // prettier-ignore\n }\n\n var key = path[path.length - 1];\n\n switch (patch.op) {\n case \"replace\":\n base[key] = patch.value;\n break;\n\n case \"add\":\n if (Array.isArray(base)) {\n // TODO: support \"foo/-\" paths for appending to an array\n base.splice(key, 0, patch.value);\n } else {\n base[key] = patch.value;\n }\n\n break;\n\n case \"remove\":\n if (Array.isArray(base)) {\n base.splice(key, 1);\n } else {\n delete base[key];\n }\n\n break;\n\n default:\n throw new Error(\"Unsupported patch operation: \" + patch.op);\n }\n }\n }\n\n return draft;\n}\n\nfunction verifyMinified() {}\n\nvar configDefaults = {\n useProxies: typeof Proxy !== \"undefined\" && typeof Reflect !== \"undefined\",\n autoFreeze: typeof process !== \"undefined\" ? process.env.NODE_ENV !== \"production\" : verifyMinified.name === \"verifyMinified\",\n onAssign: null,\n onDelete: null,\n onCopy: null\n};\nvar Immer = function Immer(config) {\n assign(this, configDefaults, config);\n this.setUseProxies(this.useProxies);\n this.produce = this.produce.bind(this);\n};\n\nImmer.prototype.produce = function produce (base, recipe, patchListener) {\n var this$1 = this;\n\n // curried invocation\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n var defaultBase = recipe;\n recipe = base;\n var self = this;\n return function curriedProduce(base) {\n var this$1 = this;\n if ( base === void 0 ) base = defaultBase;\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n return self.produce(base, function (draft) { return recipe.call.apply(recipe, [ this$1, draft ].concat( args )); }); // prettier-ignore\n };\n } // prettier-ignore\n\n\n {\n if (typeof recipe !== \"function\") {\n throw new Error(\"The first or second argument to `produce` must be a function\");\n }\n\n if (patchListener !== undefined && typeof patchListener !== \"function\") {\n throw new Error(\"The third argument to `produce` must be a function or undefined\");\n }\n }\n var result; // Only plain objects, arrays, and \"immerable classes\" are drafted.\n\n if (isDraftable(base)) {\n var scope = ImmerScope.enter();\n var proxy = this.createProxy(base);\n var hasError = true;\n\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n // finally instead of catch + rethrow better preserves original stack\n if (hasError) { scope.revoke(); }else { scope.leave(); }\n }\n\n if (result instanceof Promise) {\n return result.then(function (result) {\n scope.usePatches(patchListener);\n return this$1.processResult(result, scope);\n }, function (error) {\n scope.revoke();\n throw error;\n });\n }\n\n scope.usePatches(patchListener);\n return this.processResult(result, scope);\n } else {\n result = recipe(base);\n if (result === undefined) { return base; }\n return result !== NOTHING ? result : undefined;\n }\n};\n\nImmer.prototype.createDraft = function createDraft (base) {\n if (!isDraftable(base)) {\n throw new Error(\"First argument to `createDraft` must be a plain object, an array, or an immerable object\"); // prettier-ignore\n }\n\n var scope = ImmerScope.enter();\n var proxy = this.createProxy(base);\n proxy[DRAFT_STATE].isManual = true;\n scope.leave();\n return proxy;\n};\n\nImmer.prototype.finishDraft = function finishDraft (draft, patchListener) {\n var state = draft && draft[DRAFT_STATE];\n\n if (!state || !state.isManual) {\n throw new Error(\"First argument to `finishDraft` must be a draft returned by `createDraft`\"); // prettier-ignore\n }\n\n if (state.finalized) {\n throw new Error(\"The given draft is already finalized\"); // prettier-ignore\n }\n\n var scope = state.scope;\n scope.usePatches(patchListener);\n return this.processResult(undefined, scope);\n};\n\nImmer.prototype.setAutoFreeze = function setAutoFreeze (value) {\n this.autoFreeze = value;\n};\n\nImmer.prototype.setUseProxies = function setUseProxies (value) {\n this.useProxies = value;\n assign(this, value ? modernProxy : legacyProxy);\n};\n\nImmer.prototype.applyPatches = function applyPatches$1 (base, patches) {\n // Mutate the base state when a draft is passed.\n if (isDraft(base)) {\n return applyPatches(base, patches);\n } // Otherwise, produce a copy of the base state.\n\n\n return this.produce(base, function (draft) { return applyPatches(draft, patches); });\n};\n/** @internal */\n\n\nImmer.prototype.processResult = function processResult (result, scope) {\n var baseDraft = scope.drafts[0];\n var isReplaced = result !== undefined && result !== baseDraft;\n this.willFinalize(scope, result, isReplaced);\n\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified) {\n scope.revoke();\n throw new Error(\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\"); // prettier-ignore\n }\n\n if (isDraftable(result)) {\n // Finalize the result in case it contains (or is) a subset of the draft.\n result = this.finalize(result, null, scope);\n }\n\n if (scope.patches) {\n scope.patches.push({\n op: \"replace\",\n path: [],\n value: result\n });\n scope.inversePatches.push({\n op: \"replace\",\n path: [],\n value: baseDraft[DRAFT_STATE].base\n });\n }\n } else {\n // Finalize the base draft.\n result = this.finalize(baseDraft, [], scope);\n }\n\n scope.revoke();\n\n if (scope.patches) {\n scope.patchListener(scope.patches, scope.inversePatches);\n }\n\n return result !== NOTHING ? result : undefined;\n};\n/**\n * @internal\n * Finalize a draft, returning either the unmodified base state or a modified\n * copy of the base state.\n */\n\n\nImmer.prototype.finalize = function finalize (draft, path, scope) {\n var this$1 = this;\n\n var state = draft[DRAFT_STATE];\n\n if (!state) {\n if (Object.isFrozen(draft)) { return draft; }\n return this.finalizeTree(draft, null, scope);\n } // Never finalize drafts owned by another scope.\n\n\n if (state.scope !== scope) {\n return draft;\n }\n\n if (!state.modified) {\n return state.base;\n }\n\n if (!state.finalized) {\n state.finalized = true;\n this.finalizeTree(state.draft, path, scope);\n\n if (this.onDelete) {\n // The `assigned` object is unreliable with ES5 drafts.\n if (this.useProxies) {\n var assigned = state.assigned;\n\n for (var prop in assigned) {\n if (!assigned[prop]) { this.onDelete(state, prop); }\n }\n } else {\n var base = state.base;\n var copy = state.copy;\n each(base, function (prop) {\n if (!has(copy, prop)) { this$1.onDelete(state, prop); }\n });\n }\n }\n\n if (this.onCopy) {\n this.onCopy(state);\n } // At this point, all descendants of `state.copy` have been finalized,\n // so we can be sure that `scope.canAutoFreeze` is accurate.\n\n\n if (this.autoFreeze && scope.canAutoFreeze) {\n Object.freeze(state.copy);\n }\n\n if (path && scope.patches) {\n generatePatches(state, path, scope.patches, scope.inversePatches);\n }\n }\n\n return state.copy;\n};\n/**\n * @internal\n * Finalize all drafts in the given state tree.\n */\n\n\nImmer.prototype.finalizeTree = function finalizeTree (root, rootPath, scope) {\n var this$1 = this;\n\n var state = root[DRAFT_STATE];\n\n if (state) {\n if (!this.useProxies) {\n // Create the final copy, with added keys and without deleted keys.\n state.copy = shallowCopy(state.draft, true);\n }\n\n root = state.copy;\n }\n\n var needPatches = !!rootPath && !!scope.patches;\n\n var finalizeProperty = function (prop, value, parent) {\n if (value === parent) {\n throw Error(\"Immer forbids circular references\");\n } // In the `finalizeTree` method, only the `root` object may be a draft.\n\n\n var isDraftProp = !!state && parent === root;\n\n if (isDraft(value)) {\n var path = isDraftProp && needPatches && !state.assigned[prop] ? rootPath.concat(prop) : null; // Drafts owned by `scope` are finalized here.\n\n value = this$1.finalize(value, path, scope); // Drafts from another scope must prevent auto-freezing.\n\n if (isDraft(value)) {\n scope.canAutoFreeze = false;\n } // Preserve non-enumerable properties.\n\n\n if (Array.isArray(parent) || isEnumerable(parent, prop)) {\n parent[prop] = value;\n } else {\n Object.defineProperty(parent, prop, {\n value: value\n });\n } // Unchanged drafts are never passed to the `onAssign` hook.\n\n\n if (isDraftProp && value === state.base[prop]) { return; }\n } // Unchanged draft properties are ignored.\n else if (isDraftProp && is(value, state.base[prop])) {\n return;\n } // Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n else if (isDraftable(value) && !Object.isFrozen(value)) {\n each(value, finalizeProperty);\n }\n\n if (isDraftProp && this$1.onAssign) {\n this$1.onAssign(state, prop, value);\n }\n };\n\n each(root, finalizeProperty);\n return root;\n};\n\nvar immer = new Immer();\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n\nvar produce = immer.produce;\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is disabled in production.\n */\n\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\n\nvar setUseProxies = immer.setUseProxies.bind(immer);\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\n\nvar applyPatches$1 = immer.applyPatches.bind(immer);\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\n\nvar createDraft = immer.createDraft.bind(immer);\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\n\nvar finishDraft = immer.finishDraft.bind(immer);\n\nexport default produce;\nexport { Immer, applyPatches$1 as applyPatches, createDraft, finishDraft, DRAFTABLE as immerable, isDraft, isDraftable, NOTHING as nothing, original, produce, setAutoFreeze, setUseProxies };\n//# sourceMappingURL=immer.module.js.map\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","function Similar() {\n\tthis.list = [];\n\tthis.lastItem = undefined;\n\tthis.size = 0;\n\n\treturn this;\n}\n\nSimilar.prototype.get = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn this.lastItem.val;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn this.list[index].val;\n\t}\n\n\treturn undefined;\n};\n\nSimilar.prototype.set = function(key, val) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem.val = val;\n\t\treturn this;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\tthis.list[index].val = val;\n\t\treturn this;\n\t}\n\n\tthis.lastItem = { key: key, val: val };\n\tthis.list.push(this.lastItem);\n\tthis.size++;\n\n\treturn this;\n};\n\nSimilar.prototype.delete = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem = undefined;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.size--;\n\t\treturn this.list.splice(index, 1)[0];\n\t}\n\n\treturn undefined;\n};\n\n\n// important that has() doesn't use get() in case an existing key has a falsy value, in which case has() would return false\nSimilar.prototype.has = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn true;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nSimilar.prototype.forEach = function(callback, thisArg) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tcallback.call(thisArg || this, this.list[i].val, this.list[i].key, this);\n\t}\n};\n\nSimilar.prototype.indexOf = function(key) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tif (this.isEqual(this.list[i].key, key)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nSimilar.prototype.isEqual = function(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n};\n\nmodule.exports = Similar;","module.exports = function(forceSimilar) {\n\tif (typeof Map !== 'function' || forceSimilar) {\n\t\tvar Similar = require('./similar');\n\t\treturn new Similar();\n\t}\n\telse {\n\t\treturn new Map();\n\t}\n}\n","var MapOrSimilar = require('map-or-similar');\n\nmodule.exports = function (limit) {\n\tvar cache = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true'),\n\t\tlru = [];\n\n\treturn function (fn) {\n\t\tvar memoizerific = function () {\n\t\t\tvar currentCache = cache,\n\t\t\t\tnewMap,\n\t\t\t\tfnResult,\n\t\t\t\targsLengthMinusOne = arguments.length - 1,\n\t\t\t\tlruPath = Array(argsLengthMinusOne + 1),\n\t\t\t\tisMemoized = true,\n\t\t\t\ti;\n\n\t\t\tif ((memoizerific.numArgs || memoizerific.numArgs === 0) && memoizerific.numArgs !== argsLengthMinusOne + 1) {\n\t\t\t\tthrow new Error('Memoizerific functions should always be called with the same number of arguments');\n\t\t\t}\n\n\t\t\t// loop through each argument to traverse the map tree\n\t\t\tfor (i = 0; i < argsLengthMinusOne; i++) {\n\t\t\t\tlruPath[i] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[i]\n\t\t\t\t};\n\n\t\t\t\t// climb through the hierarchical map tree until the second-last argument has been found, or an argument is missing.\n\t\t\t\t// if all arguments up to the second-last have been found, this will potentially be a cache hit (determined later)\n\t\t\t\tif (currentCache.has(arguments[i])) {\n\t\t\t\t\tcurrentCache = currentCache.get(arguments[i]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tisMemoized = false;\n\n\t\t\t\t// make maps until last value\n\t\t\t\tnewMap = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true');\n\t\t\t\tcurrentCache.set(arguments[i], newMap);\n\t\t\t\tcurrentCache = newMap;\n\t\t\t}\n\n\t\t\t// we are at the last arg, check if it is really memoized\n\t\t\tif (isMemoized) {\n\t\t\t\tif (currentCache.has(arguments[argsLengthMinusOne])) {\n\t\t\t\t\tfnResult = currentCache.get(arguments[argsLengthMinusOne]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tisMemoized = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the result wasn't memoized, compute it and cache it\n\t\t\tif (!isMemoized) {\n\t\t\t\tfnResult = fn.apply(null, arguments);\n\t\t\t\tcurrentCache.set(arguments[argsLengthMinusOne], fnResult);\n\t\t\t}\n\n\t\t\t// if there is a cache limit, purge any extra results\n\t\t\tif (limit > 0) {\n\t\t\t\tlruPath[argsLengthMinusOne] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[argsLengthMinusOne]\n\t\t\t\t};\n\n\t\t\t\tif (isMemoized) {\n\t\t\t\t\tmoveToMostRecentLru(lru, lruPath);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlru.push(lruPath);\n\t\t\t\t}\n\n\t\t\t\tif (lru.length > limit) {\n\t\t\t\t\tremoveCachedResult(lru.shift());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmemoizerific.wasMemoized = isMemoized;\n\t\t\tmemoizerific.numArgs = argsLengthMinusOne + 1;\n\n\t\t\treturn fnResult;\n\t\t};\n\n\t\tmemoizerific.limit = limit;\n\t\tmemoizerific.wasMemoized = false;\n\t\tmemoizerific.cache = cache;\n\t\tmemoizerific.lru = lru;\n\n\t\treturn memoizerific;\n\t};\n};\n\n// move current args to most recent position\nfunction moveToMostRecentLru(lru, lruPath) {\n\tvar lruLen = lru.length,\n\t\tlruPathLen = lruPath.length,\n\t\tisMatch,\n\t\ti, ii;\n\n\tfor (i = 0; i < lruLen; i++) {\n\t\tisMatch = true;\n\t\tfor (ii = 0; ii < lruPathLen; ii++) {\n\t\t\tif (!isEqual(lru[i][ii].arg, lruPath[ii].arg)) {\n\t\t\t\tisMatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (isMatch) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlru.push(lru.splice(i, 1)[0]);\n}\n\n// remove least recently used cache item and all dead branches\nfunction removeCachedResult(removedLru) {\n\tvar removedLruLen = removedLru.length,\n\t\tcurrentLru = removedLru[removedLruLen - 1],\n\t\ttmp,\n\t\ti;\n\n\tcurrentLru.cacheItem.delete(currentLru.arg);\n\n\t// walk down the tree removing dead branches (size 0) along the way\n\tfor (i = removedLruLen - 2; i >= 0; i--) {\n\t\tcurrentLru = removedLru[i];\n\t\ttmp = currentLru.cacheItem.get(currentLru.arg);\n\n\t\tif (!tmp || !tmp.size) {\n\t\t\tcurrentLru.cacheItem.delete(currentLru.arg);\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nfunction isEqual(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n}","import { isDraft, finishDraft, createDraft, setAutoFreeze } from 'immer-peasy';\nimport React, { createContext, useContext, useRef, useReducer, useLayoutEffect, useEffect, useMemo, useState } from 'react';\nimport { compose, createStore as createStore$1, applyMiddleware } from 'redux';\nimport reduxThunk from 'redux-thunk';\nimport memoizerific from 'memoizerific';\n\nvar StoreContext = createContext();\n\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction createStoreStateHook(Context) {\n return function useStoreState(mapState) {\n var store = useContext(Context);\n var mapStateRef = useRef(mapState);\n var stateRef = useRef();\n var mountedRef = useRef(true);\n var subscriptionMapStateError = useRef();\n\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n if (subscriptionMapStateError.current || mapStateRef.current !== mapState || stateRef.current === undefined) {\n try {\n stateRef.current = mapState(store.getState());\n } catch (err) {\n var errorMessage = \"An error occurred trying to map state in a useStoreState hook: \" + err.message + \".\";\n\n if (subscriptionMapStateError.current) {\n errorMessage += \"\\nThis error may be related to the following error:\\n\" + subscriptionMapStateError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n }\n\n useIsomorphicLayoutEffect(function () {\n mapStateRef.current = mapState;\n subscriptionMapStateError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n var checkMapState = function checkMapState() {\n try {\n var newState = mapStateRef.current(store.getState());\n\n if (newState === stateRef.current) {\n return;\n }\n\n stateRef.current = newState;\n } catch (err) {\n // see https://github.com/reduxjs/react-redux/issues/1179\n // There is a possibility mapState will fail due to stale state or\n // props, therefore we will just track the error and force our\n // component to update. It should then receive the updated state\n subscriptionMapStateError.current = err;\n }\n\n if (mountedRef.current) {\n forceRender({});\n }\n };\n\n var unsubscribe = store.subscribe(checkMapState);\n checkMapState();\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, []);\n return stateRef.current;\n };\n}\nvar useStoreState = createStoreStateHook(StoreContext);\nfunction createStoreActionsHook(Context) {\n return function useStoreActions(mapActions) {\n var store = useContext(Context);\n return mapActions(store.getActions());\n };\n}\nvar useStoreActions = createStoreActionsHook(StoreContext);\nfunction createStoreDispatchHook(Context) {\n return function useStoreDispatch() {\n var store = useContext(Context);\n return store.dispatch;\n };\n}\nvar useStoreDispatch = createStoreDispatchHook(StoreContext);\nfunction useStore() {\n return useContext(StoreContext);\n}\nfunction createTypedHooks() {\n return {\n useStoreActions: useStoreActions,\n useStoreDispatch: useStoreDispatch,\n useStoreState: useStoreState,\n useStore: useStore\n };\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar actionSymbol = '🙈action🙈';\nvar actionOnSymbol = '🙈actionOn🙈';\nvar computedSymbol = '🙈computedSymbol🙈';\nvar reducerSymbol = '🙈reducer🙈';\nvar thunkOnSymbol = '🙈thunkOn🙈';\nvar thunkSymbol = '🙈thunk🙈';\n\nvar debug = function debug(state) {\n if (isDraft(state)) {\n return finishDraft(createDraft(state));\n }\n\n return state;\n};\nvar memo = function memo(fn, cacheSize) {\n return memoizerific(cacheSize)(fn);\n};\nvar actionOn = function actionOn(targetResolver, fn) {\n fn[actionOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar action = function action(fn) {\n fn[actionSymbol] = {};\n return fn;\n};\nvar defaultStateResolvers = [function (state) {\n return state;\n}];\nvar computed = function computed(fnOrStateResolvers, fn) {\n if (typeof fn === 'function') {\n fn[computedSymbol] = {\n stateResolvers: fnOrStateResolvers\n };\n return fn;\n }\n\n fnOrStateResolvers[computedSymbol] = {\n stateResolvers: defaultStateResolvers\n };\n return fnOrStateResolvers;\n};\nvar thunkOn = function thunkOn(targetResolver, fn) {\n fn[thunkOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar thunk = function thunk(fn) {\n fn[thunkSymbol] = {};\n return fn;\n};\nvar reducer = function reducer(fn) {\n fn[reducerSymbol] = {};\n return fn;\n};\n\nvar isStateObject = function isStateObject(x) {\n return x !== null && typeof x === 'object' && !Array.isArray(x) && x.constructor === Object;\n};\nvar get = function get(path, target) {\n return path.reduce(function (acc, cur) {\n return isStateObject(acc) ? acc[cur] : undefined;\n }, target);\n};\nvar set = function set(path, target, value) {\n path.reduce(function (acc, cur, idx) {\n if (idx + 1 === path.length) {\n acc[cur] = value;\n } else {\n acc[cur] = acc[cur] || {};\n }\n\n return acc[cur];\n }, target);\n};\n\nvar newify = function newify(currentPath, currentState, finalValue) {\n if (currentPath.length === 0) {\n return finalValue;\n }\n\n var newState = _extends({}, currentState);\n\n var key = currentPath[0];\n\n if (currentPath.length === 1) {\n newState[key] = finalValue;\n } else {\n newState[key] = newify(currentPath.slice(1), newState[key], finalValue);\n }\n\n return newState;\n};\n\nfunction createStoreInternals(_ref) {\n var disableImmer = _ref.disableImmer,\n initialState = _ref.initialState,\n injections = _ref.injections,\n model = _ref.model,\n reducerEnhancer = _ref.reducerEnhancer,\n references = _ref.references;\n\n function simpleProduce(path, state, fn) {\n if (disableImmer) {\n var _current = get(path, state);\n\n var next = fn(_current);\n\n if (_current !== next) {\n return newify(path, state, next);\n }\n\n return state;\n }\n\n var draft = createDraft(state);\n\n var current = get(path, draft);\n\n fn(current);\n return finishDraft(draft);\n }\n\n var defaultState = initialState;\n var actionCreatorDict = {};\n var actionCreators = {};\n var actionReducersDict = {};\n var actionThunks = {};\n var computedProperties = [];\n var customReducers = [];\n var listenerActionCreators = {};\n var listenerActionMap = {};\n var listenerDefinitions = [];\n var computedState = {\n isInReducer: false,\n currentState: defaultState\n };\n\n var recursiveExtractDefsFromModel = function recursiveExtractDefsFromModel(current, parentPath) {\n return Object.keys(current).forEach(function (key) {\n var value = current[key];\n var path = [].concat(parentPath, [key]);\n var meta = {\n parent: parentPath,\n path: path\n };\n\n var handleValueAsState = function handleValueAsState() {\n var initialParentRef = get(parentPath, initialState);\n\n if (initialParentRef && key in initialParentRef) {\n set(path, defaultState, initialParentRef[key]);\n } else {\n set(path, defaultState, value);\n }\n };\n\n if (typeof value === 'function') {\n if (value[actionSymbol] || value[actionOnSymbol]) {\n var prefix = value[actionSymbol] ? '@action' : '@actionOn';\n var type = prefix + \".\" + path.join('.');\n var actionMeta = value[actionSymbol] || value[actionOnSymbol];\n actionMeta.actionName = key;\n actionMeta.type = type;\n actionMeta.parent = meta.parent;\n actionMeta.path = meta.path; // Action Reducer\n\n actionReducersDict[type] = value; // Action Creator\n\n var actionCreator = function actionCreator(payload) {\n var actionDefinition = {\n type: type,\n payload: payload\n };\n\n if (value[actionOnSymbol] && actionMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(actionMeta.resolvedTargets);\n }\n\n var result = references.dispatch(actionDefinition);\n return result;\n };\n\n actionCreator.type = type;\n actionCreatorDict[type] = actionCreator;\n\n if (key !== 'easyPeasyReplaceState') {\n if (value[actionOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, actionCreator);\n } else {\n set(path, actionCreators, actionCreator);\n }\n }\n } else if (value[thunkSymbol] || value[thunkOnSymbol]) {\n var _prefix = value[thunkSymbol] ? '@thunk' : '@thunkOn';\n\n var _type = _prefix + \".\" + path.join('.');\n\n var thunkMeta = value[thunkSymbol] || value[thunkOnSymbol];\n thunkMeta.actionName = key;\n thunkMeta.type = _type;\n thunkMeta.parent = meta.parent;\n thunkMeta.path = meta.path; // Thunk Action\n\n var thunkHandler = function thunkHandler(payload) {\n var helpers = {\n dispatch: references.dispatch,\n getState: function getState() {\n return get(parentPath, references.getState());\n },\n getStoreActions: function getStoreActions() {\n return actionCreators;\n },\n getStoreState: references.getState,\n injections: injections,\n meta: meta\n };\n\n if (value[thunkOnSymbol] && thunkMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(thunkMeta.resolvedTargets);\n }\n\n return value(get(parentPath, actionCreators), payload, helpers);\n };\n\n set(path, actionThunks, thunkHandler); // Thunk Action Creator\n\n var startType = _type + \"(start)\";\n var successType = _type + \"(success)\";\n var failType = _type + \"(fail)\";\n\n var _actionCreator = function _actionCreator(payload) {\n var dispatchError = function dispatchError(err) {\n references.dispatch({\n type: failType,\n payload: payload,\n error: err\n });\n references.dispatch({\n type: _type,\n payload: payload,\n error: err\n });\n };\n\n var dispatchSuccess = function dispatchSuccess(result) {\n references.dispatch({\n type: successType,\n payload: payload,\n result: result\n });\n references.dispatch({\n type: _type,\n payload: payload,\n result: result\n });\n };\n\n references.dispatch({\n type: startType,\n payload: payload\n });\n\n try {\n var result = references.dispatch(function () {\n return thunkHandler(payload);\n });\n\n if (typeof result === 'object' && typeof result.then === 'function') {\n return result.then(function (resolved) {\n dispatchSuccess(resolved);\n return resolved;\n }).catch(function (err) {\n dispatchError(err);\n throw err;\n });\n }\n\n dispatchSuccess(result);\n return result;\n } catch (err) {\n dispatchError(err);\n throw err;\n }\n };\n\n _actionCreator.type = _type;\n _actionCreator.startType = startType;\n _actionCreator.successType = successType;\n _actionCreator.failType = failType;\n actionCreatorDict[_type] = _actionCreator;\n\n if (value[thunkOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, _actionCreator);\n } else {\n set(path, actionCreators, _actionCreator);\n }\n } else if (value[computedSymbol]) {\n var parent = get(parentPath, defaultState);\n\n var computedMeta = value[computedSymbol];\n var memoisedResultFn = memoizerific(1)(value);\n\n var createComputedProperty = function createComputedProperty(o) {\n Object.defineProperty(o, key, {\n configurable: true,\n enumerable: true,\n get: function get$1() {\n var storeState;\n\n if (computedState.isInReducer) {\n storeState = computedState.currentState;\n } else if (references.getState == null) {\n return undefined;\n } else {\n try {\n storeState = references.getState();\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Invalid access attempt to a computed property');\n }\n\n return undefined;\n }\n }\n\n var state = get(parentPath, storeState);\n\n var inputs = computedMeta.stateResolvers.map(function (resolver) {\n return resolver(state, storeState);\n });\n return memoisedResultFn.apply(void 0, inputs);\n }\n });\n };\n\n createComputedProperty(parent);\n computedProperties.push({\n key: key,\n parentPath: parentPath,\n createComputedProperty: createComputedProperty\n });\n } else if (value[reducerSymbol]) {\n customReducers.push({\n key: key,\n parentPath: parentPath,\n reducer: value\n });\n } else {\n handleValueAsState();\n }\n } else if (isStateObject(value)) {\n var existing = get(path, defaultState);\n\n if (existing == null) {\n set(path, defaultState, {});\n }\n\n recursiveExtractDefsFromModel(value, path);\n } else {\n handleValueAsState();\n }\n });\n };\n\n recursiveExtractDefsFromModel(model, []);\n listenerDefinitions.forEach(function (listenerActionOrThunk) {\n var listenerMeta = listenerActionOrThunk[actionOnSymbol] || listenerActionOrThunk[thunkOnSymbol];\n var targets = listenerMeta.targetResolver(get(listenerMeta.parent, actionCreators), actionCreators);\n var targetTypes = (Array.isArray(targets) ? targets : [targets]).reduce(function (acc, target) {\n if (typeof target === 'function' && target.type && actionCreatorDict[target.type]) {\n acc.push(target.type);\n } else if (typeof target === 'string') {\n acc.push(target);\n }\n\n return acc;\n }, []);\n listenerMeta.resolvedTargets = targetTypes;\n targetTypes.forEach(function (targetType) {\n var listenerReg = listenerActionMap[targetType] || [];\n listenerReg.push(actionCreatorDict[listenerMeta.type]);\n listenerActionMap[targetType] = listenerReg;\n });\n });\n\n var createReducer = function createReducer() {\n var runActionReducerAtPath = function runActionReducerAtPath(state, action, actionReducer, path) {\n return simpleProduce(path, state, function (draft) {\n return actionReducer(draft, action.payload);\n });\n };\n\n var reducerForActions = function reducerForActions(state, action) {\n var actionReducer = actionReducersDict[action.type];\n\n if (actionReducer) {\n var actionMeta = actionReducer[actionSymbol] || actionReducer[actionOnSymbol];\n return runActionReducerAtPath(state, action, actionReducer, actionMeta.parent);\n }\n\n return state;\n };\n\n var reducerForCustomReducers = function reducerForCustomReducers(state, action) {\n return customReducers.reduce(function (acc, _ref2) {\n var parentPath = _ref2.parentPath,\n key = _ref2.key,\n red = _ref2.reducer;\n return simpleProduce(parentPath, acc, function (draft) {\n draft[key] = red(draft[key], action);\n return draft;\n });\n }, state);\n };\n\n var rootReducer = function rootReducer(state, action) {\n var stateAfterActions = reducerForActions(state, action);\n var next = customReducers.length > 0 ? reducerForCustomReducers(stateAfterActions, action) : stateAfterActions;\n\n if (state !== next) {\n computedProperties.forEach(function (_ref3) {\n var parentPath = _ref3.parentPath,\n createComputedProperty = _ref3.createComputedProperty;\n createComputedProperty(get(parentPath, next));\n });\n }\n\n return next;\n };\n\n return rootReducer;\n };\n\n return {\n actionCreatorDict: actionCreatorDict,\n actionCreators: actionCreators,\n computedProperties: computedProperties,\n computedState: computedState,\n defaultState: defaultState,\n listenerActionCreators: listenerActionCreators,\n listenerActionMap: listenerActionMap,\n reducer: reducerEnhancer(createReducer())\n };\n}\n\nfunction createStore(model, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n compose$1 = _options.compose,\n _options$devTools = _options.devTools,\n devTools = _options$devTools === void 0 ? true : _options$devTools,\n _options$disableImmer = _options.disableImmer,\n disableImmer = _options$disableImmer === void 0 ? false : _options$disableImmer,\n _options$enhancers = _options.enhancers,\n enhancers = _options$enhancers === void 0 ? [] : _options$enhancers,\n _options$initialState = _options.initialState,\n initialState = _options$initialState === void 0 ? {} : _options$initialState,\n injections = _options.injections,\n _options$middleware = _options.middleware,\n middleware = _options$middleware === void 0 ? [] : _options$middleware,\n _options$mockActions = _options.mockActions,\n mockActions = _options$mockActions === void 0 ? false : _options$mockActions,\n _options$name = _options.name,\n storeName = _options$name === void 0 ? \"EasyPeasyStore\" : _options$name,\n _options$reducerEnhan = _options.reducerEnhancer,\n reducerEnhancer = _options$reducerEnhan === void 0 ? function (rootReducer) {\n return rootReducer;\n } : _options$reducerEnhan;\n\n var bindReplaceState = function bindReplaceState(modelDef) {\n return _extends({}, modelDef, {\n easyPeasyReplaceState: action(function (state, payload) {\n return payload;\n })\n });\n };\n\n var modelDefinition = bindReplaceState(model);\n var mockedActions = [];\n var references = {};\n\n var bindStoreInternals = function bindStoreInternals(state) {\n if (state === void 0) {\n state = {};\n }\n\n references.internals = createStoreInternals({\n disableImmer: disableImmer,\n initialState: state,\n injections: injections,\n model: modelDefinition,\n reducerEnhancer: reducerEnhancer,\n references: references\n });\n };\n\n bindStoreInternals(initialState);\n\n var listenerActionsMiddleware = function listenerActionsMiddleware() {\n return function (next) {\n return function (action) {\n var result = next(action);\n\n if (action && references.internals.listenerActionMap[action.type] && references.internals.listenerActionMap[action.type].length > 0) {\n var sourceAction = references.internals.actionCreatorDict[action.type];\n references.internals.listenerActionMap[action.type].forEach(function (actionCreator) {\n actionCreator({\n type: sourceAction ? sourceAction.type : action.type,\n payload: action.payload,\n error: action.error,\n result: action.result\n });\n });\n }\n\n return result;\n };\n };\n };\n\n var mockActionsMiddleware = function mockActionsMiddleware() {\n return function () {\n return function (action) {\n if (action != null) {\n mockedActions.push(action);\n }\n\n return undefined;\n };\n };\n };\n\n var computedPropertiesMiddleware = function computedPropertiesMiddleware(store) {\n return function (next) {\n return function (action) {\n references.internals.computedState.currentState = store.getState();\n references.internals.computedState.isInReducer = true;\n return next(action);\n };\n };\n };\n\n var easyPeasyMiddleware = [computedPropertiesMiddleware, reduxThunk].concat(middleware, [listenerActionsMiddleware]);\n\n if (mockActions) {\n easyPeasyMiddleware.push(mockActionsMiddleware);\n }\n\n var composeEnhancers = compose$1 || (devTools && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: storeName\n }) : compose);\n var store = createStore$1(references.internals.reducer, references.internals.defaultState, composeEnhancers.apply(void 0, [applyMiddleware.apply(void 0, easyPeasyMiddleware)].concat(enhancers)));\n store.subscribe(function () {\n references.internals.computedState.isInReducer = false;\n });\n references.dispatch = store.dispatch;\n references.getState = store.getState;\n\n var bindActionCreators = function bindActionCreators() {\n Object.keys(store.dispatch).forEach(function (actionsKey) {\n delete store.dispatch[actionsKey];\n });\n Object.keys(references.internals.actionCreators).forEach(function (key) {\n store.dispatch[key] = references.internals.actionCreators[key];\n });\n };\n\n bindActionCreators();\n\n var rebindStore = function rebindStore(removeKey) {\n var currentState = store.getState();\n\n if (removeKey) {\n delete currentState[removeKey];\n }\n\n bindStoreInternals(store.getState());\n store.replaceReducer(references.internals.reducer);\n references.internals.actionCreatorDict['@action.easyPeasyReplaceState'](references.internals.defaultState);\n bindActionCreators();\n };\n\n return Object.assign(store, {\n addModel: function addModel(key, modelForKey) {\n if (modelDefinition[key] && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model already contains a model definition for \\\"\" + key + \"\\\"\");\n store.removeModel(key);\n }\n\n modelDefinition[key] = modelForKey;\n rebindStore();\n },\n clearMockedActions: function clearMockedActions() {\n mockedActions = [];\n },\n getActions: function getActions() {\n return references.internals.actionCreators;\n },\n getListeners: function getListeners() {\n return references.internals.listenerActionCreators;\n },\n getMockedActions: function getMockedActions() {\n return [].concat(mockedActions);\n },\n reconfigure: function reconfigure(newModel) {\n modelDefinition = bindReplaceState(newModel);\n rebindStore();\n },\n removeModel: function removeModel(key) {\n if (!modelDefinition[key]) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model does not contain a model definition for \\\"\" + key + \"\\\"\");\n }\n\n return;\n }\n\n delete modelDefinition[key];\n rebindStore(key);\n }\n });\n}\n\n/* eslint-disable react/prop-types */\nfunction createContextStore(model, config) {\n var StoreContext = createContext();\n\n function Provider(_ref) {\n var children = _ref.children,\n initialData = _ref.initialData;\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n }\n\n function useStore() {\n return useContext(StoreContext);\n }\n\n return {\n Provider: Provider,\n useStore: useStore,\n useStoreState: createStoreStateHook(StoreContext),\n useStoreActions: createStoreActionsHook(StoreContext),\n useStoreDispatch: createStoreDispatchHook(StoreContext)\n };\n}\n\n/**\n * Some good references on the topic of reinitialisation:\n * - https://github.com/facebook/react/issues/14830\n */\n\nfunction createComponentStore(model, config) {\n return function useLocalStore(initialData) {\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n var previousStateRef = useRef(store.getState());\n\n var _useState = useState(function () {\n return store.getState();\n }),\n currentState = _useState[0],\n setCurrentState = _useState[1];\n\n useEffect(function () {\n return store.subscribe(function () {\n var nextState = store.getState();\n\n if (previousStateRef.current !== nextState) {\n previousStateRef.current = nextState;\n setCurrentState(nextState);\n }\n });\n }, [store]);\n return [currentState, store.getActions()];\n };\n}\n\nvar StoreProvider = function StoreProvider(_ref) {\n var children = _ref.children,\n store = _ref.store;\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n};\n\n/**\n * The auto freeze feature of immer doesn't seem to work in our testing. We have\n * explicitly disabled it to avoid perf issues.\n */\n\nsetAutoFreeze(false);\n\nexport { StoreProvider, action, actionOn, computed, createComponentStore, createContextStore, createStore, createTypedHooks, debug, memo, reducer, thunk, thunkOn, useStore, useStoreActions, useStoreDispatch, useStoreState };\n//# sourceMappingURL=easy-peasy.esm.js.map\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i(t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr\";\nimport transition_attrTween from \"./attrTween\";\nimport transition_delay from \"./delay\";\nimport transition_duration from \"./duration\";\nimport transition_ease from \"./ease\";\nimport transition_filter from \"./filter\";\nimport transition_merge from \"./merge\";\nimport transition_on from \"./on\";\nimport transition_remove from \"./remove\";\nimport transition_select from \"./select\";\nimport transition_selectAll from \"./selectAll\";\nimport transition_selection from \"./selection\";\nimport transition_style from \"./style\";\nimport transition_styleTween from \"./styleTween\";\nimport transition_text from \"./text\";\nimport transition_transition from \"./transition\";\nimport transition_tween from \"./tween\";\nimport transition_end from \"./end\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i(t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index\";\nimport schedule from \"../transition/schedule\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt\";\nimport selection_transition from \"./transition\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import { action } from 'easy-peasy';\nimport isEqual from 'fast-deep-equal';\n\nimport { getBoundingBox, getNodesInside, getConnectedEdges } from '../utils/graph';\n\nexport default {\n setOnConnect: action((state, onConnect) => {\n state.onConnect = onConnect;\n }),\n\n setNodes: action((state, nodes) => {\n state.nodes = nodes;\n }),\n\n setEdges: action((state, edges) => {\n state.edges = edges;\n }),\n\n updateNodeData: action((state, { id, ...data }) => {\n state.nodes.forEach((n) => {\n if (n.id === id) {\n n.__rg = {\n ...n.__rg,\n ...data\n };\n }\n });\n }),\n\n updateNodePos: action((state, { id, pos }) => {\n state.nodes.forEach((n) => {\n if (n.id === id) {\n n.__rg = {\n ...n.__rg,\n position: pos\n };\n }\n });\n }),\n\n setSelection: action((state, isActive) => {\n state.selectionActive = isActive;\n }),\n\n setNodesSelection: action((state, { isActive, selection }) => {\n if (!isActive) {\n state.nodesSelectionActive = false;\n state.selectedElements = [];\n\n return;\n }\n const selectedNodes = getNodesInside(state.nodes, selection, state.transform);\n const selectedNodesBbox = getBoundingBox(selectedNodes);\n\n state.selection = selection;\n state.nodesSelectionActive = true;\n state.selectedNodesBbox = selectedNodesBbox;\n state.nodesSelectionActive = true;\n }),\n\n setSelectedElements: action((state, elements) => {\n const selectedElementsArr = Array.isArray(elements) ? elements : [elements];\n const selectedElementsUpdated = !isEqual(selectedElementsArr, state.selectedElements);\n const selectedElements = selectedElementsUpdated ? selectedElementsArr : state.selectedElements;\n\n state.selectedElements = selectedElements;\n }),\n\n updateSelection: action((state, selection) => {\n const selectedNodes = getNodesInside(state.nodes, selection, state.transform);\n const selectedEdges = getConnectedEdges(selectedNodes, state.edges);\n\n const nextSelectedElements = [...selectedNodes, ...selectedEdges];\n const selectedElementsUpdated = !isEqual(nextSelectedElements, state.selectedElements);\n\n state.selection = selection;\n state.selectedElements = selectedElementsUpdated ? nextSelectedElements: state.selectedElements\n }),\n\n updateTransform: action((state, transform) => {\n state.transform = [transform.x, transform.y, transform.k];\n }),\n\n updateSize: action((state, size) => {\n state.width = size.width;\n state.height = size.height;\n }),\n\n initD3: action((state, { zoom, selection }) => {\n state.d3Zoom = zoom;\n state.d3Selection = selection;\n state.d3Initialised = true;\n }),\n\n setConnectionPosition: action((state, position) => {\n state.connectionPosition = position;\n }),\n\n setConnectionSourceId: action((state, sourceId) => {\n state.connectionSourceId = sourceId;\n })\n};","import { createStore } from 'easy-peasy';\n\nimport actions from './actions';\n\nconst store = createStore({\n width: 0,\n height: 0,\n transform: [0, 0, 1],\n nodes: [],\n edges: [],\n selectedElements: [],\n selectedNodesBbox: { x: 0, y: 0, width: 0, height: 0 },\n\n d3Zoom: null,\n d3Selection: null,\n d3Initialised: false,\n\n nodesSelectionActive: false,\n selectionActive: false,\n selection: {},\n\n connectionSourceId: null,\n connectionPosition: { x: 0, y: 0 },\n\n onConnect: () => {},\n\n ...actions\n});\n\nexport default store;\n","export const isFunction = obj => !!(obj && obj.constructor && obj.call && obj.apply);\n\nexport const isDefined = obj => typeof obj !== 'undefined';\n\nexport const inInputDOMNode = e => e && e.target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.nodeName);\n\nexport const getDimensions = (node = {}) => ({\n width: node.offsetWidth,\n height: node.offsetHeight\n});\n","import { zoomIdentity } from 'd3-zoom';\n\nimport store from '../store';\nimport { isDefined } from './index';\n\nexport const isEdge = element => element.source && element.target;\n\nexport const isNode = element => !element.source && !element.target;\n\nexport const getOutgoers = (node, elements) => {\n if (!isNode(node)) {\n return [];\n }\n\n const outgoerIds = elements.filter(e => e.source === node.id).map(e => e.target);\n return elements.filter(e => outgoerIds.includes(e.id));\n};\n\nexport const removeElements = (elementsToRemove, elements) => {\n const nodeIdsToRemove = elementsToRemove.map(n => n.id);\n\n return elements.filter(e => {\n return (\n !nodeIdsToRemove.includes(e.id) &&\n !nodeIdsToRemove.includes(e.target) &&\n !nodeIdsToRemove.includes(e.source)\n );\n });\n};\n\nfunction getEdgeId(params) {\n return `reactflow__edge-${params.source}-${params.target}`;\n}\n\nexport const addEdge = (edgeParams, elements) => {\n if (!edgeParams.source || !edgeParams.target) {\n throw new Error('Can not create edge. An edge needs a source and a target');\n }\n\n return elements.concat({\n ...edgeParams,\n id: isDefined(edgeParams.id) ? edgeParams.id : getEdgeId(edgeParams)\n });\n}\n\nconst pointToRendererPoint = ({ x, y }, transform) => {\n const rendererX = (x - transform[0]) * (1 / [transform[2]]);\n const rendererY = (y - transform[1]) * (1 / [transform[2]]);\n\n return {\n x: rendererX,\n y: rendererY\n };\n};\n\nexport const parseElement = (e, transform) => {\n if (!e.id) {\n throw new Error('All elements (nodes and edges) need to have an id.',)\n }\n\n if (isEdge(e)) {\n return {\n ...e,\n id: e.id.toString(),\n type: e.type || 'default'\n };\n }\n\n return {\n ...e,\n id: e.id.toString(),\n type: e.type || 'default',\n __rg: {\n position: pointToRendererPoint(e.position, transform),\n width: null,\n height: null,\n handleBounds : {}\n }\n };\n};\n\nexport const getBoundingBox = (nodes) => {\n const bbox = nodes.reduce((res, node) => {\n const { position } = node.__rg;\n const x2 = position.x + node.__rg.width;\n const y2 = position.y + node.__rg.height;\n\n if (position.x < res.minX) {\n res.minX = position.x;\n }\n\n if (x2 > res.maxX) {\n res.maxX = x2;\n }\n\n if (position.y < res.minY) {\n res.minY = position.y;\n }\n\n if (y2 > res.maxY) {\n res.maxY = y2;\n }\n\n return res;\n }, {\n minX: Number.MAX_VALUE,\n minY: Number.MAX_VALUE,\n maxX: 0,\n maxY: 0\n });\n\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY\n };\n};\n\nexport const graphPosToZoomedPos = (pos, transform) => {\n return {\n x: (pos.x * transform[2]) + transform[0],\n y: (pos.y * transform[2]) + transform[1]\n };\n}\n\nexport const getNodesInside = (nodes, bbox, transform = [0, 0, 1], partially = false) => {\n return nodes.\n filter(n => {\n const bboxPos = {\n x: (bbox.x - transform[0]) * (1 / transform[2]),\n y: (bbox.y - transform[1]) * (1 / transform[2])\n };\n const bboxWidth = bbox.width * (1 / transform[2]);\n const bboxHeight = bbox.height * (1 / transform[2]);\n const { position, width, height } = n.__rg;\n const nodeWidth = partially ? -width : width;\n const nodeHeight = partially ? 0 : height;\n const offsetX = partially ? width : 0;\n const offsetY = partially ? height : 0;\n\n return (\n (position.x + offsetX > bboxPos.x && (position.x + nodeWidth) < (bboxPos.x + bboxWidth)) &&\n (position.y + offsetY > bboxPos.y && (position.y + nodeHeight) < (bboxPos.y + bboxHeight))\n );\n });\n};\n\nexport const getConnectedEdges = (nodes, edges) => {\n const nodeIds = nodes.map(n => n.id);\n\n return edges.filter(e => {\n const hasSourceHandleId = e.source.includes('__');\n const hasTargetHandleId = e.target.includes('__');\n\n const sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source;\n const targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target;\n\n return nodeIds.includes(sourceId) || nodeIds.includes(targetId);\n });\n};\n\nexport const fitView = ({ padding = 0 } = {}) => {\n const state = store.getState();\n const bounds = getBoundingBox(state.nodes);\n const maxBoundsSize = Math.max(bounds.width, bounds.height);\n const k = Math.min(state.width, state.height) / (maxBoundsSize + (maxBoundsSize * padding));\n const boundsCenterX = bounds.x + (bounds.width / 2);\n const boundsCenterY = bounds.y + (bounds.height / 2);\n const transform = [(state.width / 2) - (boundsCenterX * k), (state.height / 2) - (boundsCenterY * k)];\n const fittedTransform = zoomIdentity.translate(transform[0], transform[1]).scale(k);\n\n state.d3Selection.call(state.d3Zoom.transform, fittedTransform);\n};\n\nexport const zoomIn = () => {\n const state = store.getState();\n state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] + 0.2);\n};\n\nexport const zoomOut = () => {\n const state = store.getState();\n state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] - 0.2);\n};\n","import React, { memo } from 'react';\nimport { useStoreState } from 'easy-peasy';\n\nimport { isNode } from '../../utils/graph';\n\nfunction renderNode(d, props, state) {\n const nodeType = d.type || 'default';\n\n if (!props.nodeTypes[nodeType]) {\n console.warn(`No node type found for type \"${nodeType}\". Using fallback type \"default\".`);\n }\n\n const NodeComponent = props.nodeTypes[nodeType] || props.nodeTypes.default;\n const selected = state.selectedElements\n .filter(isNode)\n .map(e => e.id)\n .includes(d.id);\n\n return (\n \n );\n}\n\nconst NodeRenderer = memo((props) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n transform: s.transform,\n selectedElements: s.selectedElements\n }));\n\n const { transform, nodes } = state;\n const transformStyle = { transform : `translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})` };\n\n return (\n \n {nodes.map(d => renderNode(d, props, state))}\n \n );\n});\n\nNodeRenderer.displayName = 'NodeRenderer';\nNodeRenderer.whyDidYouRender = false;\n\nexport default NodeRenderer;\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React, { useEffect, useState } from 'react';\nimport cx from 'classnames';\n\nexport default (props) => {\n const [sourceNode, setSourceNode] = useState(null);\n const hasHandleId = props.connectionSourceId.includes('__');\n const sourceIdSplitted = props.connectionSourceId.split('__');\n const nodeId = sourceIdSplitted[0];\n const handleId = hasHandleId ? sourceIdSplitted[1] : null;\n\n useEffect(() => {\n setSourceNode(props.nodes.find(n => n.id === nodeId));\n }, []);\n\n if (!sourceNode) {\n return null;\n }\n\n const style = props.connectionLineStyle || {};\n const className = cx('react-flow__edge', 'connection', props.className);\n\n const sourceHandle = handleId ? sourceNode.__rg.handleBounds.source.find(d => d.id === handleId) : sourceNode.__rg.handleBounds.source[0];\n const sourceHandleX = sourceHandle ? sourceHandle.x + (sourceHandle.width / 2) : sourceNode.__rg.width / 2;\n const sourceHandleY = sourceHandle ? sourceHandle.y + (sourceHandle.height / 2) : sourceNode.__rg.height;\n const sourceX = sourceNode.__rg.position.x + sourceHandleX;\n const sourceY = sourceNode.__rg.position.y + sourceHandleY;\n\n const targetX = (props.connectionPositionX - props.transform[0]) * (1 / props.transform[2]);\n const targetY = (props.connectionPositionY - props.transform[1]) * (1 / props.transform[2]);\n\n let dAttr = '';\n\n if (props.connectionLineType === 'bezier') {\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n dAttr = `M${sourceX},${sourceY} C${sourceX},${centerY} ${targetX},${centerY} ${targetX},${targetY}`;\n } else {\n dAttr = `M${sourceX},${sourceY} ${targetX},${targetY}`;\n }\n\n return (\n \n \n \n );\n};\n","import React, { memo } from 'react';\nimport { useStoreState } from 'easy-peasy';\n\nimport ConnectionLine from '../../components/ConnectionLine';\nimport { isEdge } from '../../utils/graph';\n\nfunction getHandlePosition(position, node, handle = null) {\n if (!handle) {\n switch (position) {\n case 'top': return {\n x: node.__rg.width / 2,\n y: 0\n };\n case 'right': return {\n x: node.__rg.width,\n y: node.__rg.height / 2\n };\n case 'bottom': return {\n x: node.__rg.width / 2,\n y: node.__rg.height\n };\n case 'left': return {\n x: 0,\n y: node.__rg.height / 2\n };\n }\n }\n\n switch (position) {\n case 'top': return {\n x: handle.x + (handle.width / 2),\n y: handle.y\n };\n case 'right': return {\n x: handle.x + handle.width,\n y: handle.y + (handle.height / 2)\n };\n case 'bottom': return {\n x: handle.x + (handle.width / 2),\n y: handle.y + handle.height\n };\n case 'left': return {\n x: handle.x,\n y: handle.y + (handle.height / 2)\n };\n }\n}\n\nfunction getHandle(bounds, handleId) {\n let handle = null;\n\n if (!bounds) {\n return null;\n }\n\n // there is no handleId when there are no multiple handles/ handles with ids\n // so we just pick the first one\n if (bounds.length === 1 || !handleId) {\n handle = bounds[0];\n } else if (handleId) {\n handle = bounds.find(d => d.id === handleId);\n }\n\n return handle;\n}\n\nfunction getEdgePositions({ sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition }) {\n const sourceHandlePos = getHandlePosition(sourcePosition, sourceNode, sourceHandle)\n const sourceX = sourceNode.__rg.position.x + sourceHandlePos.x;\n const sourceY = sourceNode.__rg.position.y + sourceHandlePos.y;\n\n const targetHandlePos = getHandlePosition(targetPosition, targetNode, targetHandle);\n const targetX = targetNode.__rg.position.x + targetHandlePos.x;\n const targetY = targetNode.__rg.position.y + targetHandlePos.y;\n\n return {\n sourceX, sourceY, targetX, targetY\n };\n}\n\nfunction renderEdge(e, props, state) {\n const edgeType = e.type || 'default';\n\n const hasSourceHandleId = e.source.includes('__');\n const hasTargetHandleId = e.target.includes('__');\n\n const sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source;\n const targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target;\n\n const sourceHandleId = hasSourceHandleId ? e.source.split('__')[1] : null;\n const targetHandleId = hasTargetHandleId ? e.target.split('__')[1] : null;\n\n const sourceNode = state.nodes.find(n => n.id === sourceId);\n const targetNode = state.nodes.find(n => n.id === targetId);\n\n if (!sourceNode) {\n throw new Error(`couldn't create edge for source id: ${sourceId}`);\n }\n\n if (!targetNode) {\n throw new Error(`couldn't create edge for target id: ${targetId}`);\n }\n\n const EdgeComponent = props.edgeTypes[edgeType] || props.edgeTypes.default;\n const sourceHandle = getHandle(sourceNode.__rg.handleBounds.source, sourceHandleId);\n const targetHandle = getHandle(targetNode.__rg.handleBounds.target, targetHandleId);\n const sourcePosition = sourceHandle ? sourceHandle.position : 'bottom';\n const targetPosition = targetHandle ? targetHandle.position : 'top';\n\n const { sourceX, sourceY, targetX, targetY } = getEdgePositions({\n sourceNode, sourceHandle, sourcePosition,\n targetNode, targetHandle, targetPosition\n });\n const selected = state.selectedElements\n .filter(isEdge)\n .find(elm => elm.source === sourceId && elm.target === targetId);\n\n return (\n \n );\n}\n\nconst EdgeRenderer = memo((props) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n edges: s.edges,\n transform: s.transform,\n selectedElements: s.selectedElements,\n connectionSourceId: s.connectionSourceId,\n position: s.connectionPosition\n }));\n const {\n width, height, connectionLineStyle, connectionLineType\n } = props;\n\n if (!width) {\n return null;\n }\n\n const { transform, edges, nodes, connectionSourceId, position } = state;\n const transformStyle = `translate(${transform[0]},${transform[1]}) scale(${transform[2]})`;\n\n return (\n \n \n {edges.map(e => renderEdge(e, props, state))}\n {connectionSourceId && (\n \n )}\n \n \n );\n});\n\nEdgeRenderer.displayName = 'EdgeRenderer';\n\nexport default EdgeRenderer;\n","import React, { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useStoreState } from 'easy-peasy';\nimport classnames from 'classnames';\n\nconst baseStyles = {\n position: 'absolute',\n top: 0,\n left: 0\n};\n\nconst Grid = memo(({\n gap, strokeColor, strokeWidth, style,\n className\n}) => {\n const {\n width,\n height,\n transform: [x, y, scale],\n } = useStoreState(s => s);\n\n const gridClasses = classnames('react-flow__grid', className);\n const scaledGap = gap * scale;\n\n const xStart = x % scaledGap;\n const yStart = y % scaledGap;\n\n const lineCountX = Math.ceil(width / scaledGap) + 1;\n const lineCountY = Math.ceil(height / scaledGap) + 1;\n\n const xValues = Array.from({length: lineCountX}, (_, index) => `M${index * scaledGap + xStart} 0 V${height}`);\n const yValues = Array.from({length: lineCountY}, (_, index) => `M0 ${index * scaledGap + yStart} H${width}`);\n\n const path = [...xValues, ...yValues].join(' ');\n\n return (\n \n \n \n );\n});\n\nGrid.displayName = 'Grid';\n\nGrid.propTypes = {\n gap: PropTypes.number,\n strokeColor: PropTypes.string,\n strokeWidth: PropTypes.number,\n style: PropTypes.object,\n className: PropTypes.string\n};\n\nGrid.defaultProps = {\n gap: 24,\n strokeColor: '#999',\n strokeWidth:0.1,\n style: {},\n className: null\n};\n\nexport default Grid;\n","import React, { memo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Grid from './Grid';\n\nconst bgComponents = {\n grid: Grid\n};\n\nconst BackgroundRenderer = memo(({\n backgroundType, ...rest\n}) => {\n const BackgroundComponent = bgComponents[backgroundType];\n return \n});\n\nBackgroundRenderer.displayName = 'BackgroundRenderer';\n\nBackgroundRenderer.propTypes = {\n backgroundType: PropTypes.oneOf(['grid'])\n};\n\nBackgroundRenderer.defaultProps = {\n backgroundType: 'grid'\n};\n\nexport default BackgroundRenderer;\n","import React, { useEffect, useRef, useState, memo } from 'react';\nimport { useStoreActions } from 'easy-peasy';\n\nconst initialRect = {\n startX: 0,\n startY: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n draw: false\n};\n\nfunction getMousePosition(evt) {\n const containerBounds = document.querySelector('.react-flow').getBoundingClientRect();\n\n return {\n x: evt.clientX - containerBounds.left,\n y: evt.clientY - containerBounds.top,\n };\n}\n\nexport default memo(() => {\n const selectionPane = useRef(null);\n const [rect, setRect] = useState(initialRect);\n const setSelection = useStoreActions(a => a.setSelection);\n const updateSelection = useStoreActions(a => a.updateSelection);\n const setNodesSelection = useStoreActions(a => a.setNodesSelection);\n\n useEffect(() => {\n function onMouseDown(evt) {\n const mousePos = getMousePosition(evt);\n\n setRect((currentRect) => ({\n ...currentRect,\n startX: mousePos.x,\n startY: mousePos.y,\n x: mousePos.x,\n y: mousePos.y,\n draw: true\n }));\n\n setSelection(true);\n }\n\n function onMouseMove(evt) {\n setRect((currentRect) => {\n if (!currentRect.draw) {\n return currentRect;\n }\n\n const mousePos = getMousePosition(evt);\n const negativeX = mousePos.x < currentRect.startX;\n const negativeY = mousePos.y < currentRect.startY;\n const nextRect = {\n ...currentRect,\n x: negativeX ? mousePos.x : currentRect.x,\n y: negativeY ? mousePos.y : currentRect.y,\n width: negativeX ? currentRect.startX - mousePos.x : mousePos.x - currentRect.startX,\n height: negativeY ? currentRect.startY - mousePos.y : mousePos.y - currentRect.startY,\n };\n\n updateSelection(nextRect);\n\n return nextRect;\n });\n }\n\n function onMouseUp() {\n setRect((currentRect) => {\n setNodesSelection({ isActive: true, selection: currentRect });\n setSelection(false);\n\n return {\n ...currentRect,\n draw: false\n };\n });\n }\n\n selectionPane.current.addEventListener('mousedown', onMouseDown);\n selectionPane.current.addEventListener('mousemove', onMouseMove);\n selectionPane.current.addEventListener('mouseup', onMouseUp);\n\n return () => {\n selectionPane.current.removeEventListener('mousedown', onMouseDown);\n selectionPane.current.removeEventListener('mousemove', onMouseMove);\n selectionPane.current.removeEventListener('mouseup', onMouseUp);\n };\n }, []);\n\n return (\n \n {(rect.draw || rect.fixed) && (\n \n )}\n \n );\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findInArray = findInArray;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\nexports.int = int;\nexports.dontSetMe = dontSetMe;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPrefix = getPrefix;\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix(prop\n/*: string*/\n= 'transform')\n/*: string*/\n{\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n const style = window.document.documentElement.style;\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n let out = '';\n let shouldCapitalize = true;\n\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n\n return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = getPrefix();\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.addEvent = addEvent;\nexports.removeEvent = removeEvent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTranslation = getTranslation;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nexports.styleHacks = styleHacks;\nexports.addClassName = addClassName;\nexports.removeClassName = removeClassName;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nlet matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n } // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n\n\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n let node = el;\n\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n} // Get from offsetParent\n\n\nfunction offsetXYFromParent(evt\n/*: {clientX: number, clientY: number}*/\n, offsetParent\n/*: HTMLElement*/\n)\n/*: ControlPosition*/\n{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n return {\n x,\n y\n };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\n\nfunction getTranslation({\n x,\n y\n}\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n let translation = `translate(${x}${unitSuffix},${y}${unitSuffix})`;\n\n if (positionOffset) {\n const defaultX = `${typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix}`;\n const defaultY = `${typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix}`;\n translation = `translate(${defaultX}, ${defaultY})` + translation;\n }\n\n return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n }\n } catch (e) {// probably IE\n }\n}\n\nfunction styleHacks(childStyle\n/*: Object*/\n= {})\n/*: Object*/\n{\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBoundPosition = getBoundPosition;\nexports.snapToGrid = snapToGrid;\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.getControlPosition = getControlPosition;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\n\nvar _shims = require(\"./shims\");\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./domFns\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n } // Keep x and y below right and bottom limits...\n\n\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n const node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent);\n} // Create an data object exposed by 's events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n const state = draggable.state;\n const isStart = !(0, _shims.isNum)(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX,\n deltaY: y - state.lastY,\n lastX: state.lastX,\n lastY: state.lastY,\n x,\n y\n };\n }\n} // Create an data exposed by 's events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n const scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n const node = _reactDom.default.findDOMNode(draggable);\n\n if (!node) {\n throw new Error(': Unmounted during event!');\n } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log(...args) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n}; // Default to mouse events.\n\nlet dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};*/\n\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};*/\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nclass DraggableCore extends _react.default.Component {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN,\n lastY: NaN,\n touchIdentifier: null\n });\n\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e); // Only accept left-clicks.\n\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n\n const {\n ownerDocument\n } = thisNode; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n return;\n } // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n\n\n const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.setState({\n touchIdentifier\n }); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n\n const {\n x,\n y\n } = position; // Create an event object with all the data parents need to make a decision here.\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return; // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n\n this.setState({\n dragging: true,\n lastX: x,\n lastY: y\n }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n\n _defineProperty(this, \"handleDrag\", e => {\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault(); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position; // Snap to grid if prop has been provided\n\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX,\n deltaY = y - this.state.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents')\n /*: any*/\n )\n /*: MouseTouchEvent*/\n ); // I see why this insanity was deprecated\n // $FlowIgnore\n\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n });\n\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.state.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {\n x,\n y\n } = position;\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n }); // Call event handler\n\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n });\n\n _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n\n _defineProperty(this, \"onTouchStart\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onTouchEnd\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStop(e);\n });\n }\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return _react.default.cloneElement(_react.default.Children.only(this.props.children), {\n style: (0, _domFns.styleHacks)(this.props.children.props.style),\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n\n}\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props\n /*: DraggableCoreProps*/\n , propName\n /*: $Keys*/\n ) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {}\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Define \n//\nclass Draggable extends _react.default.Component {\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps({\n position\n }\n /*: DraggableProps*/\n , {\n prevPropsPosition\n }\n /*: DraggableState*/\n ) {\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: { ...position\n }\n };\n }\n\n return null;\n }\n\n constructor(props\n /*: DraggableProps*/\n ) {\n super(props);\n\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState\n /*: $Shape*/\n = {\n x: uiData.x,\n y: uiData.y\n }; // Keep within bounds.\n\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n newState.x += this.state.slackX;\n newState.y += this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n } // Short-circuit if user's callback killed it.\n\n\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n const shouldStop = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldStop === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState\n /*: $Shape*/\n = {\n dragging: false,\n slackX: 0,\n slackY: 0\n }; // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n const controlled = Boolean(this.props.position);\n\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n });\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: { ...props.position\n },\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , 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.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && _reactDom.default.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n\n componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\n\n render()\n /*: ReactElement*/\n {\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n }; // If this element was SVG, we use the `transform` attribute.\n\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n } // Mark with class while dragging\n\n\n const className = (0, _classnames.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n }); // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n return _react.default.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), _react.default.cloneElement(_react.default.Children.only(children), {\n className: className,\n style: { ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n\n}\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", { // Accepts all props accepts.\n ..._DraggableCore.default.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(Draggable, \"defaultProps\", { ..._DraggableCore.default.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n position: null,\n scale: 1\n});","var Draggable = require('./build/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./build/DraggableCore').default;\n","import React, { useState, memo } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport { isNode } from '../../utils/graph';\n\nfunction getStartPositions(elements) {\n return elements\n .filter(isNode)\n .reduce((res, node) => {\n const startPosition = {\n x: node.__rg.position.x || node.position.x,\n y: node.__rg.position.y || node.position.x\n };\n\n res[node.id] = startPosition;\n\n return res;\n }, {});\n}\n\nexport default memo(() => {\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [startPositions, setStartPositions] = useState({});\n const state = useStoreState(s => ({\n transform: s.transform,\n selectedNodesBbox: s.selectedNodesBbox,\n selectedElements: s.selectedElements\n }));\n const updateNodePos = useStoreActions(a => a.updateNodePos);\n const [x, y, k] = state.transform;\n const position = state.selectedNodesBbox;\n\n const onStart = (evt) => {\n const scaledClient = {\n x: evt.clientX * (1 / k),\n y: evt.clientY * (1 / k)\n };\n const offsetX = scaledClient.x - position.x - x;\n const offsetY = scaledClient.y - position.y - y;\n const startPositions = getStartPositions(state.selectedElements);\n\n setOffset({ x: offsetX, y: offsetY });\n setStartPositions(startPositions);\n };\n\n const onDrag = (evt) => {\n const scaledClient = {\n x: evt.clientX * (1 / k),\n y: evt.clientY * (1 / k)\n };\n\n state.selectedElements.filter(isNode).forEach(node => {\n updateNodePos({ id: node.id, pos: {\n x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - x ,\n y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - y\n }});\n });\n };\n\n return (\n \n \n \n \n \n );\n});\n","import { useState, useEffect } from 'react';\n\nimport { inInputDOMNode } from '../utils';\n\nexport default function useKeyPress(keyCode) {\n const [keyPressed, setKeyPressed] = useState(false);\n\n function downHandler(evt) {\n if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) {\n setKeyPressed(true);\n }\n }\n\n const upHandler = (evt) => {\n if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) {\n setKeyPressed(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', downHandler);\n window.addEventListener('keyup', upHandler);\n return () => {\n window.removeEventListener('keydown', downHandler);\n window.removeEventListener('keyup', upHandler);\n };\n }, []);\n\n return keyPressed;\n}\n","import { useEffect } from 'react';\nimport * as d3Zoom from 'd3-zoom';\nimport { select, event } from 'd3-selection';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nconst d3ZoomInstance = d3Zoom\n .zoom()\n .scaleExtent([0.5, 2])\n .filter(() => !event.button);\n\nexport default function useD3Zoom(zoomPane, onMove, shiftPressed) {\n const state = useStoreState(s => ({\n transform: s.transform,\n d3Selection: s.d3Selection,\n d3Zoom: s.d3Zoom,\n edges: s.edged,\n d3Initialised: s.d3Initialised,\n nodesSelectionActive: s.nodesSelectionActive\n }));\n\n const initD3 = useStoreActions(actions => actions.initD3);\n const updateTransform = useStoreActions(actions => actions.updateTransform);\n\n useEffect(() => {\n const selection = select(zoomPane.current).call(d3ZoomInstance);\n initD3({ zoom: d3ZoomInstance, selection });\n }, []);\n\n useEffect(() => {\n if (shiftPressed) {\n d3ZoomInstance.on('zoom', null);\n } else {\n d3ZoomInstance.on('zoom', () => {\n if (event.sourceEvent && event.sourceEvent.target !== zoomPane.current) {\n return false;\n }\n\n updateTransform(event.transform);\n\n onMove();\n });\n\n if (state.d3Selection) {\n // we need to restore the graph transform otherwise d3 zoom transform and graph transform are not synced\n const graphTransform = d3Zoom.zoomIdentity\n .translate(state.transform[0], state.transform[1])\n .scale(state.transform[2]);\n\n state.d3Selection.call(state.d3Zoom.transform, graphTransform);\n }\n }\n\n return () => {\n d3ZoomInstance.on('zoom', null);\n };\n }, [shiftPressed]);\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","import React, { useEffect, useRef, memo } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport NodeRenderer from '../NodeRenderer';\nimport EdgeRenderer from '../EdgeRenderer';\nimport BackgroundRenderer from '../BackgroundRenderer';\nimport UserSelection from '../../components/UserSelection';\nimport NodesSelection from '../../components/NodesSelection';\nimport useKeyPress from '../../hooks/useKeyPress';\nimport useD3Zoom from '../../hooks/useD3Zoom';\nimport useGlobalKeyHandler from '../../hooks/useGlobalKeyHandler';\nimport useElementUpdater from '../../hooks/useElementUpdater'\nimport { getDimensions } from '../../utils';\nimport { fitView, zoomIn, zoomOut } from '../../utils/graph';\n\nconst GraphView = memo(({\n nodeTypes, edgeTypes, onMove, onLoad,\n onElementClick, onNodeDragStop, connectionLineType, connectionLineStyle,\n selectionKeyCode, onElementsRemove, deleteKeyCode, elements,\n showBackground, backgroundGap, backgroundColor, backgroundType,\n onConnect\n}) => {\n const zoomPane = useRef();\n const rendererNode = useRef();\n const state = useStoreState(s => ({\n width: s.width,\n height: s.height,\n nodes: s.nodes,\n edges: s.edges,\n d3Initialised: s.d3Initialised,\n nodesSelectionActive: s.nodesSelectionActive\n }));\n const updateSize = useStoreActions(actions => actions.updateSize);\n const setNodesSelection = useStoreActions(actions => actions.setNodesSelection);\n const setOnConnect = useStoreActions(a => a.setOnConnect);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n\n const onZoomPaneClick = () => setNodesSelection({ isActive: false });\n\n const updateDimensions = () => {\n const size = getDimensions(rendererNode.current);\n updateSize(size);\n };\n\n useEffect(() => {\n updateDimensions();\n setOnConnect(onConnect);\n window.onresize = updateDimensions;\n\n return () => {\n window.onresize = null;\n };\n }, []);\n\n useD3Zoom(zoomPane, onMove, selectionKeyPressed);\n\n useEffect(() => {\n if (state.d3Initialised) {\n onLoad({\n fitView,\n zoomIn,\n zoomOut\n });\n }\n }, [state.d3Initialised]);\n\n useGlobalKeyHandler({ onElementsRemove, deleteKeyCode });\n useElementUpdater({ elements });\n\n return (\n
\n {showBackground && (\n \n )}\n \n \n {selectionKeyPressed && }\n {state.nodesSelectionActive && }\n \n
\n );\n});\n\nGraphView.displayName = 'GraphView';\n\nexport default GraphView;\n","import { useEffect } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport useKeyPress from './useKeyPress';\nimport { isEdge, getConnectedEdges } from '../utils/graph';\n\nexport default ({ deleteKeyCode, onElementsRemove }) => {\n const state = useStoreState(s => ({ selectedElements: s.selectedElements, edges: s.edges }))\n const setNodesSelection = useStoreActions(a => a.setNodesSelection);\n const deleteKeyPressed = useKeyPress(deleteKeyCode);\n\n useEffect(() => {\n if (deleteKeyPressed && state.selectedElements.length) {\n let elementsToRemove = state.selectedElements;\n\n // we also want to remove the edges if only one node is selected\n if (state.selectedElements.length === 1 && !isEdge(state.selectedElements[0])) {\n const connectedEdges = getConnectedEdges(state.selectedElements, state.edges);\n elementsToRemove = [...state.selectedElements, ...connectedEdges];\n }\n\n onElementsRemove(elementsToRemove);\n setNodesSelection({ isActive: false });\n }\n }, [deleteKeyPressed])\n\n return null;\n};\n","import { useEffect } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\nimport isEqual from 'fast-deep-equal';\n\nimport { parseElement, isNode, isEdge } from '../utils/graph';\n\nconst useElementUpdater = ({ elements }) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n edges: s.edges,\n transform: s.transform\n }));\n\n const setNodes = useStoreActions(a => a.setNodes);\n const setEdges = useStoreActions(a => a.setEdges);\n\n useEffect(() => {\n const nodes = elements.filter(isNode);\n const edges = elements.filter(isEdge).map(parseElement);\n\n const nextNodes = nodes.map(propNode => {\n const existingNode = state.nodes.find(n => n.id === propNode.id);\n\n if (existingNode) {\n const data = !isEqual(existingNode.data, propNode.data) ?\n { ...existingNode.data, ...propNode.data } : existingNode.data;\n\n return {\n ...existingNode,\n data\n };\n }\n\n return parseElement(propNode, state.transform);\n });\n\n const nodesChanged = !isEqual(state.nodes, nextNodes);\n const edgesChanged = !isEqual(state.edges, edges);\n\n if (nodesChanged) {\n setNodes(nextNodes);\n }\n\n if (edgesChanged) {\n setEdges(edges);\n }\n });\n\n return null;\n};\n\nexport default useElementUpdater;\n","import React, { memo } from 'react';\nimport cx from 'classnames';\n\nfunction onMouseDown(evt, { nodeId, setSourceId, setPosition, onConnect, isTarget, isValidConnection }) {\n const containerBounds = document.querySelector('.react-flow').getBoundingClientRect();\n let recentHoveredHandle = null;\n\n setPosition({\n x: evt.clientX - containerBounds.x,\n y: evt.clientY - containerBounds.y,\n });\n setSourceId(nodeId);\n\n function resetRecentHandle() {\n if (recentHoveredHandle) {\n recentHoveredHandle.classList.remove('valid');\n recentHoveredHandle.classList.remove('connecting');\n }\n }\n\n // checks if element below mouse is a handle and returns connection in form of an object { source: 123, target: 312 }\n function checkElementBelowIsValid(evt) {\n const elementBelow = document.elementFromPoint(evt.clientX, evt.clientY);\n const result = {\n elementBelow,\n isValid: false,\n connection: null,\n isHoveringHandle: false\n };\n\n if (elementBelow && (elementBelow.classList.contains('target') || elementBelow.classList.contains('source'))) {\n let connection = null;\n\n if (isTarget) {\n const sourceId = elementBelow.getAttribute('data-nodeid');\n connection = { source: sourceId, target: nodeId };\n } else {\n const targetId = elementBelow.getAttribute('data-nodeid');\n connection = { source: nodeId, target: targetId };\n }\n\n const isValid = isValidConnection(connection);\n\n result.connection = connection;\n result.isValid = isValid;\n result.isHoveringHandle = true;\n }\n\n return result;\n }\n\n function onMouseMove(evt) {\n setPosition({\n x: evt.clientX - containerBounds.x,\n y: evt.clientY - containerBounds.y,\n });\n\n const { connection, elementBelow, isValid, isHoveringHandle } = checkElementBelowIsValid(evt);\n\n if (!isHoveringHandle) {\n return resetRecentHandle();\n }\n\n const isOwnHandle = connection.source === connection.target;\n\n if (!isOwnHandle) {\n recentHoveredHandle = elementBelow;\n elementBelow.classList.add('connecting');\n elementBelow.classList.toggle('valid', isValid);\n }\n }\n\n function onMouseUp(evt) {\n const { connection, isValid } = checkElementBelowIsValid(evt);\n\n if (isValid) {\n onConnect(connection);\n }\n\n resetRecentHandle();\n setSourceId(null);\n\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n }\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp)\n}\n\nconst BaseHandle = memo(({\n type, nodeId, onConnect, position,\n setSourceId, setPosition, className,\n id = false, isValidConnection, ...rest\n}) => {\n const isTarget = type === 'target';\n const handleClasses = cx(\n 'react-flow__handle',\n className,\n position,\n { source: !isTarget, target: isTarget }\n );\n\n const nodeIdWithHandleId = id ? `${nodeId}__${id}` : nodeId;\n\n return (\n onMouseDown(evt, {\n nodeId: nodeIdWithHandleId, setSourceId, setPosition,\n onConnect, isTarget, isValidConnection\n })}\n {...rest}\n />\n );\n});\n\nBaseHandle.displayName = 'BaseHandle';\nBaseHandle.whyDidYouRender = false;\n\nexport default BaseHandle;\n","import { createContext } from 'react';\n\nexport const NodeIdContext = createContext(null);\nexport const Provider = NodeIdContext.Provider;\nexport const Consumer = NodeIdContext.Consumer;\n\nProvider.displayName = 'NodeIdProvider';\n\nexport default NodeIdContext;\n","import React, { memo, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { useStoreActions, useStoreState } from 'easy-peasy';\n\nimport BaseHandle from './BaseHandle';\nimport NodeIdContext from '../../contexts/NodeIdContext'\n\nconst Handle = memo(({ onConnect, ...rest }) => {\n const nodeId = useContext(NodeIdContext);\n const { setPosition, setSourceId } = useStoreActions(a => ({\n setPosition: a.setConnectionPosition,\n setSourceId: a.setConnectionSourceId\n }));\n const onConnectAction = useStoreState(s => s.onConnect);\n const onConnectExtended = (params) => {\n onConnectAction(params);\n onConnect(params);\n };\n\n return (\n \n );\n});\n\nHandle.displayName = 'Handle';\n\nHandle.propTypes = {\n type: PropTypes.oneOf(['source', 'target']),\n position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n onConnect: PropTypes.func,\n isValidConnection: PropTypes.func\n};\n\nHandle.defaultProps = {\n type: 'source',\n position: 'top',\n onConnect: () => {},\n isValidConnection: () => true\n};\n\nexport default Handle;\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#ff6060',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n \n {data.label}\n \n
\n);\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#9999ff',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n {data.label}\n \n
\n);\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#55dd99',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n \n {data.label}\n
\n);\n","import React, { useEffect, useRef, useState, memo } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport cx from 'classnames';\n\nimport { getDimensions, inInputDOMNode } from '../../utils';\nimport { Provider } from '../../contexts/NodeIdContext';\nimport store from '../../store';\n\nconst isHandle = e => (\n e.target.className &&\n e.target.className.includes &&\n (e.target.className.includes('source') || e.target.className.includes('target'))\n);\n\nconst hasResizeObserver = !!window.ResizeObserver;\n\nconst getHandleBounds = (sel, nodeElement, parentBounds, k) => {\n const handles = nodeElement.querySelectorAll(sel);\n\n if (!handles || !handles.length) {\n return null;\n }\n\n return [].map.call(handles, (handle) => {\n const bounds = handle.getBoundingClientRect();\n const dimensions = getDimensions(handle);\n const nodeIdAttr = handle.getAttribute('data-nodeid');\n const handlePosition = handle.getAttribute('data-handlepos');\n const nodeIdSplitted = nodeIdAttr.split('__');\n\n let handleId = null;\n\n if (nodeIdSplitted) {\n handleId = nodeIdSplitted.length ? nodeIdSplitted[1] : nodeIdSplitted;\n }\n\n return {\n id: handleId,\n position: handlePosition,\n x: (bounds.x - parentBounds.x) * (1 / k),\n y: (bounds.y - parentBounds.y) * (1 / k),\n ...dimensions\n };\n });\n};\n\nconst onStart = (evt, { setOffset, onClick, id, type, data, position, transform }) => {\n if (inInputDOMNode(evt) || isHandle(evt)) {\n return false;\n }\n\n const scaledClient = {\n x: evt.clientX * (1 / [transform[2]]),\n y: evt.clientY * (1 / [transform[2]])\n };\n const offsetX = scaledClient.x - position.x - transform[0];\n const offsetY = scaledClient.y - position.y - transform[1];\n const node = { id, type, position, data };\n\n store.dispatch.setSelectedElements({ id, type });\n setOffset({ x: offsetX, y: offsetY });\n onClick(node);\n};\n\nconst onDrag = (evt, { setDragging, id, offset, transform }) => {\n const scaledClient = {\n x: evt.clientX * (1 / transform[2]),\n y: evt.clientY * (1 / transform[2])\n };\n\n setDragging(true);\n store.dispatch.updateNodePos({ id, pos: {\n x: scaledClient.x - transform[0] - offset.x,\n y: scaledClient.y - transform[1] - offset.y\n }});\n};\n\nconst onStop = ({ onNodeDragStop, setDragging, isDragging, id, type, position, data }) => {\n if (!isDragging) {\n return false;\n }\n\n setDragging(false);\n onNodeDragStop({\n id, type, position, data\n });\n};\n\nexport default NodeComponent => {\n const NodeWrapper = memo((props) => {\n const nodeElement = useRef(null);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [isDragging, setDragging] = useState(false);\n const {\n id, type, data, transform, xPos, yPos, selected,\n onClick, onNodeDragStop, style\n } = props;\n\n const position = { x: xPos, y: yPos };\n const nodeClasses = cx('react-flow__node', { selected });\n const nodeStyle = { zIndex: selected ? 10 : 3, transform: `translate(${xPos}px,${yPos}px)` };\n\n const updateNode = () => {\n const storeState = store.getState()\n const bounds = nodeElement.current.getBoundingClientRect();\n const dimensions = getDimensions(nodeElement.current);\n const handleBounds = {\n source: getHandleBounds('.source', nodeElement.current, bounds, storeState.transform[2]),\n target: getHandleBounds('.target', nodeElement.current, bounds, storeState.transform[2])\n };\n store.dispatch.updateNodeData({ id, ...dimensions, handleBounds });\n }\n\n useEffect(() => {\n updateNode();\n\n let resizeObserver = null;\n\n if (hasResizeObserver) {\n resizeObserver = new ResizeObserver(entries => {\n for (let entry of entries) {\n updateNode();\n }\n });\n\n resizeObserver.observe(nodeElement.current);\n }\n\n return () => {\n if (hasResizeObserver && resizeObserver) {\n resizeObserver.unobserve(nodeElement.current);\n }\n }\n }, []);\n\n return (\n onStart(evt, { onClick, id, type, data, setOffset, transform, position })}\n onDrag={evt => onDrag(evt, { setDragging, id, offset, transform })}\n onStop={() => onStop({ onNodeDragStop, isDragging, setDragging, id, type, position, data })}\n scale={transform[2]}\n >\n \n \n \n \n \n \n );\n });\n\n NodeWrapper.displayName = 'NodeWrapper';\n NodeWrapper.whyDidYouRender = false;\n\n return NodeWrapper;\n};\n","import React, { memo } from 'react';\n\nexport default memo(({\n sourceX, sourceY, targetX, targetY,\n sourcePosition, targetPosition, style = {}\n}) => {\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n let dAttr = `M${sourceX},${sourceY} C${sourceX},${centerY} ${targetX},${centerY} ${targetX},${targetY}`;\n\n if (['left', 'right'].includes(sourcePosition) && ['left', 'right'].includes(targetPosition)) {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n\n dAttr = `M${sourceX},${sourceY} C${centerX},${sourceY} ${centerX},${targetY} ${targetX},${targetY}`;\n } else if (['left', 'right'].includes(sourcePosition) || ['left', 'right'].includes(targetPosition)) {\n dAttr = `M${sourceX},${sourceY} C${sourceX},${targetY} ${sourceX},${targetY} ${targetX},${targetY}`;\n }\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\n\nexport default memo((props) => {\n const {\n sourceX, sourceY, targetX, targetY, style = {}\n } = props;\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\n\nexport default memo((props) => {\n const {\n sourceX, sourceY, targetX, targetY, style = {}\n } = props;\n\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\nimport cx from 'classnames';\n\nimport { inInputDOMNode } from '../../utils';\nimport store from '../../store';\n\nexport default EdgeComponent => {\n const EdgeWrapper = memo((props) => {\n const {\n id, source, target, type,\n animated, selected, onClick\n } = props;\n const edgeClasses = cx('react-flow__edge', { selected, animated });\n const onEdgeClick = (evt) => {\n if (inInputDOMNode(evt)) {\n return false;\n }\n\n store.dispatch.setSelectedElements({ id, source, target });\n onClick({ id, source, target, type });\n };\n\n return (\n \n \n \n );\n });\n\n EdgeWrapper.displayName = 'EdgeWrapper';\n EdgeWrapper.whyDidYouRender = false;\n\n return EdgeWrapper;\n};\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { StoreProvider } from 'easy-peasy';\n\nif (process.env.NODE_ENV !== 'production') {\n const whyDidYouRender = require('@welldone-software/why-did-you-render');\n whyDidYouRender(React);\n}\n\nimport GraphView from '../GraphView';\nimport DefaultNode from '../../components/Nodes/DefaultNode';\nimport InputNode from '../../components/Nodes/InputNode';\nimport OutputNode from '../../components/Nodes/OutputNode';\nimport { createNodeTypes } from '../NodeRenderer/utils';\nimport BezierEdge from '../../components/Edges/BezierEdge';\nimport StraightEdge from '../../components/Edges/StraightEdge';\nimport StepEdge from '../../components/Edges/StepEdge';\nimport { createEdgeTypes } from '../EdgeRenderer/utils';\nimport store from '../../store';\n\nimport '../../style.css';\n\nconst ReactFlow = ({\n style, onElementClick, elements, children,\n nodeTypes, edgeTypes, onLoad, onMove,\n onElementsRemove, onConnect, onNodeDragStop, connectionLineType,\n connectionLineStyle, deleteKeyCode, selectionKeyCode,\n showBackground, backgroundGap, backgroundType, backgroundColor\n}) => {\n const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []);\n const edgeTypesParsed = useMemo(() => createEdgeTypes(edgeTypes), []);\n\n return (\n
\n \n \n {children}\n \n
\n );\n};\n\nReactFlow.displayName = 'ReactFlow';\n\nReactFlow.propTypes = {\n onElementClick: PropTypes.func,\n onElementsRemove: PropTypes.func,\n onNodeDragStop: PropTypes.func,\n onConnect: PropTypes.func,\n\tonLoad: PropTypes.func,\n onMove: PropTypes.func,\n nodeTypes: PropTypes.object,\n edgeTypes: PropTypes.object,\n connectionLineType: PropTypes.string,\n connectionLineStyle: PropTypes.object,\n deleteKeyCode: PropTypes.number,\n selectionKeyCode: PropTypes.number,\n gridColor: PropTypes.string,\n gridGap: PropTypes.number,\n showBackground: PropTypes.bool,\n backgroundType: PropTypes.oneOf(['grid'])\n};\n\nReactFlow.defaultProps = {\n onElementClick: () => {},\n onElementsRemove: () => {},\n onNodeDragStop: () => {},\n onConnect: () => {},\n\tonLoad: () => {},\n onMove: () => {},\n nodeTypes: {\n input: InputNode,\n default: DefaultNode,\n output: OutputNode\n },\n edgeTypes: {\n default: BezierEdge,\n straight: StraightEdge,\n step: StepEdge\n },\n connectionLineType: 'bezier',\n connectionLineStyle: {},\n deleteKeyCode: 8,\n selectionKeyCode: 16,\n backgroundColor: '#999',\n backgroundGap: 24,\n showBackground: true,\n backgroundType: 'grid'\n};\n\nexport default ReactFlow;\n","import DefaultNode from '../../components/Nodes/DefaultNode';\nimport InputNode from '../../components/Nodes/InputNode';\nimport OutputNode from '../../components/Nodes/OutputNode';\nimport wrapNode from '../../components/Nodes/wrapNode';\n\nexport function createNodeTypes(nodeTypes) {\n const standardTypes = {\n input: wrapNode(nodeTypes.input || InputNode),\n default: wrapNode(nodeTypes.default || DefaultNode),\n output: wrapNode(nodeTypes.output || OutputNode)\n };\n\n const specialTypes = Object\n .keys(nodeTypes)\n .filter(k => !['input', 'default', 'output'].includes(k))\n .reduce((res, key) => {\n res[key] = wrapNode(nodeTypes[key] || DefaultNode);\n\n return res;\n }, {});\n\n return {\n ...standardTypes,\n ...specialTypes\n };\n}\n","import StraightEdge from '../../components/Edges/StraightEdge';\nimport BezierEdge from '../../components/Edges/BezierEdge';\nimport wrapEdge from '../../components/Edges/wrapEdge';\n\nexport function createEdgeTypes(edgeTypes) {\n const standardTypes = {\n default: wrapEdge(edgeTypes.default || BezierEdge),\n straight: wrapEdge(edgeTypes.bezier || StraightEdge)\n };\n\n const specialTypes = Object\n .keys(edgeTypes)\n .filter(k => !['default', 'bezier'].includes(k))\n .reduce((res, key) => {\n res[key] = wrapEdge(edgeTypes[key] ||BezierEdge);\n\n return res;\n }, {});\n\n return {\n ...standardTypes,\n ...specialTypes\n };\n}\n"],"names":["obj","NOTHING","Symbol","DRAFTABLE","for","DRAFT_STATE","isDraft","value","isDraftable","Array","isArray","proto","Object","getPrototypeOf","prototype","constructor","assign","target","key","has","ownKeys","Reflect","getOwnPropertySymbols","getOwnPropertyNames","concat","shallowCopy","base","invokeGetters","slice","clone","create","forEach","desc","getOwnPropertyDescriptor","get","call","enumerable","defineProperty","writable","configurable","each","cb","i","length","isEnumerable","prop","thing","hasOwnProperty","is","x","y","ImmerScope","parent","this","drafts","canAutoFreeze","patches","revoke","draft","usePatches","patchListener","inversePatches","leave","current","enter","descriptors","createProxy","clonePotentialDraft","state","assertUnrevoked","peek","source","finalizing","prepareCopy","copy","set","assigned","modified","markChanged","proxyProperty","scope","finalized","revoke$1","revoked","push","Error","JSON","stringify","markChangesSweep","hasArrayChanges","hasObjectChanges","keys","baseValue","undefined","state$1","descriptor","legacyProxy","freeze","willFinalize","result","isReplaced","markChangesRecursively","object","i$1","i$2","createProxy$1","ref","Proxy","revocable","arrayTraps","objectTraps","proxy","source$1","peek$1","markChanged$1","deleteProperty","owner","setPrototypeOf","fn","arguments","apply","isNaN","parseInt","modernProxy","generatePatches","basePath","assign$1","delta","start","end","path","op","useRemove","replaceCount","path$1","generateArrayPatches","assignedValue","origValue","generateObjectPatches","applyPatches","patch","join","splice","configDefaults","useProxies","autoFreeze","process","env","NODE_ENV","name","onAssign","onDelete","onCopy","Immer","config","setUseProxies","produce","bind","recipe","this$1","defaultBase","self","args","len","hasError","Promise","then","processResult","error","createDraft","isManual","finishDraft","setAutoFreeze","baseDraft","finalize","isFrozen","finalizeTree","root","rootPath","needPatches","finalizeProperty","isDraftProp","immer","observable","ponyfill","window","global","module","Function","randomString","Math","random","toString","substring","split","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","subscribe","listener","isSubscribed","index","indexOf","dispatch","action","isPlainObject","type","listeners","replaceReducer","nextReducer","$$observable","_ref","outerSubscribe","observer","TypeError","observeState","next","unsubscribe","_defineProperty","enumerableOnly","filter","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","compose","_len","funcs","_key","arg","reduce","a","b","applyMiddleware","middlewares","store","_dispatch","middlewareAPI","chain","map","middleware","isCrushed","createThunkMiddleware","extraArgument","message","console","e","warning","thunk","Similar","list","lastItem","size","withExtraArgument","isEqual","val","delete","callback","thisArg","val1","val2","forceSimilar","Map","require$$0","limit","cache","MapOrSimilar","FORCE_SIMILAR_INSTEAD_OF_MAP","lru","memoizerific","newMap","fnResult","currentCache","argsLengthMinusOne","lruPath","isMemoized","numArgs","cacheItem","moveToMostRecentLru","removeCachedResult","shift","wasMemoized","isMatch","ii","lruLen","lruPathLen","removedLru","tmp","removedLruLen","currentLru","StoreContext","createContext","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","Context","useStoreState","mapState","useContext","mapStateRef","useRef","stateRef","mountedRef","subscriptionMapStateError","forceRender","useReducer","s","err","errorMessage","stack","checkMapState","newState","useStoreActions","mapActions","getActions","createStoreActionsHook","_extends","actionSymbol","actionOnSymbol","computedSymbol","reducerSymbol","thunkOnSymbol","thunkSymbol","isStateObject","acc","cur","idx","newify","currentPath","finalValue","createStoreInternals","disableImmer","initialState","injections","model","reducerEnhancer","references","simpleProduce","_current","defaultState","actionCreatorDict","actionCreators","actionReducersDict","actionThunks","computedProperties","customReducers","listenerActionCreators","listenerActionMap","listenerDefinitions","computedState","isInReducer","recursiveExtractDefsFromModel","parentPath","meta","handleValueAsState","initialParentRef","actionMeta","actionName","actionCreator","payload","actionDefinition","resolvedTargets","_type","thunkMeta","thunkHandler","helpers","getStoreActions","getStoreState","startType","successType","failType","_actionCreator","dispatchError","dispatchSuccess","resolved","catch","computedMeta","memoisedResultFn","createComputedProperty","o","storeState","warn","inputs","stateResolvers","resolver","listenerActionOrThunk","listenerMeta","targets","targetResolver","targetTypes","targetType","listenerReg","reducerForActions","actionReducer","runActionReducerAtPath","stateAfterActions","red","reducerForCustomReducers","_ref3","StoreProvider","children","React","createElement","Provider","noop","t","n","_","Dispatch","parseTypenames","typenames","types","trim","c","on","typename","T","that","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElementNS","creatorFixed","fullname","namespace","none","selector","querySelector","empty","querySelectorAll","matches","update","EnterNode","datum","_next","_parent","__data__","appendChild","child","insertBefore","keyPrefix","bindIndex","group","exit","data","node","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","NaN","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","getAttribute","classedAdd","names","add","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","lower","previousSibling","firstChild","constantNull","removeChild","selection_cloneShallow","cloneNode","selection_cloneDeep","contains","filterEvents","event","mouseenter","mouseleave","filterContextListener","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","__on","j","m","removeEventListener","capture","onAdd","wrap","d","addEventListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","Selection","groups","parents","_groups","_parents","selection","sourceEvent","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","left","clientLeft","top","clientTop","changedTouches","touches","identifier","touch","preventDefault","stopImmediatePropagation","factory","extend","definition","Color","select","subgroups","subnode","subgroup","selectAll","selectorAll","match","matcher","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","sparse","onenter","onupdate","onexit","append","merge","order","groups0","groups1","m0","m1","min","merges","group0","group1","sort","compare","compareNode","sortgroups","sortgroup","nodes","attr","getAttributeNS","property","classed","text","html","creator","insert","before","deep","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","l","toLowerCase","exec","rgbn","Rgb","rgba","hsla","r","g","opacity","rgb_formatHex","hex","rgb_formatRgb","max","round","h","Hsl","hslConvert","hsl2rgb","m2","gamma","nogamma","pow","exponential","constant","linear","define","channels","displayable","formatHsl","brighter","k","darker","rgbGamma","colorRgb","reA","reB","am","bm","bs","bi","lastIndex","q","number","one","zero","cssNode","cssRoot","cssView","svgNode","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","f","sqrt","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","transform","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","rho","SQRT2","rho2","rho4","epsilon2","cosh","exp","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","log","d1","b0","b1","r0","r1","coshr0","u","sinh","duration","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","stop","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","id","timing","schedules","__transition","tween","tick","ease","init","schedule","active","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","interpolateNumber","interpolateRgb","interpolateString","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","removeFunction","easeConstant","resolve","reject","cancel","interrupt","defaultTiming","ZoomEvent","Transform","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","range","rescaleY","nopropagation","defaultFilter","ctrlKey","button","defaultExtent","SVGElement","hasAttribute","viewBox","width","height","clientWidth","clientHeight","defaultTransform","__zoom","defaultWheelDelta","deltaY","deltaMode","defaultTouchable","navigator","maxTouchPoints","defaultConstrain","extent","translateExtent","dx0","dx1","dy0","dy1","equal","flags","valueOf","setOnConnect","onConnect","setNodes","setEdges","edges","updateNodeData","__rg","updateNodePos","pos","position","setSelection","isActive","selectionActive","setNodesSelection","nodesSelectionActive","selectedElements","selectedNodes","getNodesInside","selectedNodesBbox","getBoundingBox","setSelectedElements","elements","selectedElementsArr","updateSelection","selectedEdges","getConnectedEdges","nextSelectedElements","selectedElementsUpdated","updateTransform","updateSize","initD3","zoom","d3Zoom","d3Selection","d3Initialised","setConnectionPosition","connectionPosition","setConnectionSourceId","sourceId","connectionSourceId","options","_options","compose$1","_options$devTools","devTools","_options$disableImmer","_options$enhancers","enhancers","_options$initialState","_options$middleware","_options$mockActions","mockActions","_options$name","storeName","_options$reducerEnhan","rootReducer","bindReplaceState","modelDef","easyPeasyReplaceState","modelDefinition","mockedActions","bindStoreInternals","internals","easyPeasyMiddleware","reduxThunk","sourceAction","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","createStore$1","bindActionCreators","actionsKey","rebindStore","removeKey","addModel","modelForKey","removeModel","clearMockedActions","getListeners","getMockedActions","reconfigure","newModel","actions","isDefined","inInputDOMNode","includes","nodeName","getDimensions","offsetWidth","offsetHeight","isEdge","element","isNode","pointToRendererPoint","parseElement","handleBounds","bbox","res","x2","y2","minX","maxX","minY","maxY","Number","MAX_VALUE","partially","bboxPos","bboxWidth","bboxHeight","nodeWidth","nodeHeight","offsetX","offsetY","nodeIds","hasSourceHandleId","hasTargetHandleId","targetId","fitView","padding","bounds","maxBoundsSize","boundsCenterX","boundsCenterY","fittedTransform","zoomIdentity","zoomIn","scaleTo","zoomOut","NodeRenderer","memo","props","transformStyle","className","nodeType","nodeTypes","NodeComponent","selected","xPos","yPos","onClick","onElementClick","onNodeDragStop","renderNode","displayName","whyDidYouRender","hasOwn","classNames","classes","argType","inner","exports","default","useState","sourceNode","setSourceNode","hasHandleId","sourceIdSplitted","nodeId","handleId","find","connectionLineStyle","cx","sourceHandle","sourceHandleX","sourceHandleY","sourceX","sourceY","targetX","connectionPositionX","targetY","connectionPositionY","dAttr","connectionLineType","yOffset","abs","centerY","getHandlePosition","handle","getHandle","renderEdge","edgeType","sourceHandleId","targetHandleId","targetNode","EdgeComponent","edgeTypes","targetHandle","sourcePosition","targetPosition","sourceHandlePos","targetHandlePos","getEdgePositions","elm","animated","EdgeRenderer","ConnectionLine","baseStyles","Grid","gap","strokeColor","strokeWidth","gridClasses","classnames","scaledGap","xStart","yStart","lineCountX","ceil","lineCountY","xValues","from","yValues","fill","stroke","propTypes","PropTypes","defaultProps","bgComponents","grid","BackgroundRenderer","backgroundType","rest","BackgroundComponent","oneOf","initialRect","startX","startY","draw","getMousePosition","evt","containerBounds","selectionPane","setRect","onMouseDown","mousePos","currentRect","onMouseMove","negativeX","negativeY","nextRect","onMouseUp","fixed","array","func","num","propName","componentName","getPrefix","browserPrefixToKey","prefixes","str","out","shouldCapitalize","toUpperCase","kebabToTitleCase","_default","matchesSelector","el","baseNode","handler","attachEvent","detachEvent","computedStyle","_shims","int","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","paddingTop","paddingBottom","paddingLeft","paddingRight","offsetParent","offsetParentRect","body","scrollLeft","scrollTop","controlPos","positionOffset","translation","getTranslation","[object Object]","_getPrefix","targetTouches","findInArray","doc","styleEl","getElementById","getElementsByTagName","addClassName","removeClassName","getSelection","removeAllRanges","childStyle","touchAction","__esModule","newObj","_interopRequireWildcard","matchesSelectorFunc","method","isFunction","unitSuffix","replace","draggable","right","bottom","cloneBounds","findDOMNode","ownerWindow","boundNode","HTMLElement","nodeStyle","boundNodeStyle","offsetLeft","marginLeft","offsetTop","marginTop","_domFns","innerWidth","outerWidth","marginRight","innerHeight","outerHeight","marginBottom","isNum","pendingX","pendingY","axis","touchIdentifier","draggableCore","touchObj","getTouch","offsetXYFromParent","isStart","lastX","deltaX","lastY","coreData","_reactDom","_interopRequireDefault","DRAGGABLE_DEBUG","_react","_propTypes","require$$1","require$$2","_log","require$$3","eventsFor","move","mouse","dragEventFor","DraggableCore","Component","super","dragging","allowAnyClick","thisNode","disabled","Node","matchesSelectorAndParentsTo","getTouchIdentifier","setState","_positionFns","getControlPosition","coreEvent","createCoreData","onStart","enableUserSelectHack","addUserSelectStyles","addEvent","handleDrag","handleDragStop","snapToGrid","onDrag","MouseEvent","initMouseEvent","removeUserSelectStyles","onStop","removeEvent","handleDragStart","cloneElement","Children","only","styleHacks","onTouchStart","onTouchEnd","bool","arrayOf","dontSetMe","_classnames","_DraggableCore","require$$4","require$$5","Draggable","prevPropsPosition","createDraggableData","dragged","uiData","slackX","slackY","newStateX","newStateY","getBoundPosition","Boolean","defaultPosition","isElementSVG","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","draggableCoreProps","svgTransform","validPosition","transformOpts","canDragX","canDragY","createSVGTransform","createCSSTransform","onDragStart","onDragStop","oneOfType","shape","offset","setOffset","startPositions","setStartPositions","ReactDraggable","scaledClient","startPosition","useKeyPress","keyCode","keyPressed","setKeyPressed","downHandler","upHandler","d3ZoomInstance","touchstarting","touchending","constrain","wheelDelta","touchable","scaleExtent","interpolateZoom","touchDelay","wheelDelay","clickDistance2","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","centroid","gesture","p","w","clean","__zooming","Gesture","taps","wheel","noevent","view","moved","x0","y0","noclick","MozUserSelect","__noselect","dragEnable","dragDisable","k1","shiftKey","started","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","k0","translateBy","translateTo","emit","customEvent","clickDistance","GraphView","onMove","onLoad","selectionKeyCode","onElementsRemove","deleteKeyCode","showBackground","backgroundGap","backgroundColor","zoomPane","rendererNode","selectionKeyPressed","updateDimensions","onresize","shiftPressed","edged","graphTransform","useD3Zoom","deleteKeyPressed","elementsToRemove","connectedEdges","useGlobalKeyHandler","nextNodes","propNode","existingNode","nodesChanged","edgesChanged","useElementUpdater","UserSelection","NodesSelection","BaseHandle","setSourceId","setPosition","isValidConnection","isTarget","handleClasses","nodeIdWithHandleId","recentHoveredHandle","resetRecentHandle","checkElementBelowIsValid","elementBelow","elementFromPoint","isValid","connection","isHoveringHandle","toggle","NodeIdContext","Consumer","Handle","onConnectAction","nodeStyles","background","borderRadius","label","hasResizeObserver","ResizeObserver","getHandleBounds","sel","nodeElement","parentBounds","handles","dimensions","nodeIdAttr","handlePosition","nodeIdSplitted","NodeWrapper","isDragging","setDragging","nodeClasses","zIndex","updateNode","resizeObserver","entries","observe","unobserve","xOffset","centerX","EdgeWrapper","edgeClasses","require","ReactFlow","nodeTypesParsed","useMemo","input","wrapNode","InputNode","DefaultNode","output","OutputNode","createNodeTypes","edgeTypesParsed","wrapEdge","BezierEdge","straight","bezier","StraightEdge","createEdgeTypes","gridColor","gridGap","step","StepEdge","edgeParams","outgoerIds","nodeIdsToRemove"],"mappings":"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"} \ No newline at end of file diff --git a/dist/plugins/index.css b/dist/plugins/index.css new file mode 100644 index 00000000..af1d4f44 --- /dev/null +++ b/dist/plugins/index.css @@ -0,0 +1,189 @@ +.react-flow { + width: 100%; + height: 100%; + position: relative; + overflow: hidden; +} + +.react-flow__renderer { + width: 100%; + height: 100%; + position: absolute; +} + +.react-flow__zoompane { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + z-index: 1; +} + +.react-flow__selectionpane { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + z-index: 2; +} + +.react-flow__selection { + position: absolute; + top: 0; + left: 0; + background: rgba(0, 89, 220, 0.08); + border: 1px dotted rgba(0, 89, 220, 0.8); +} + +.react-flow__edges { + position: absolute; + top: 0; + left: 0; + pointer-events: none; + z-index: 2; +} + +.react-flow__edge { + fill: none; + stroke: #bbb; + stroke-width: 2; + pointer-events: all; +} + +.react-flow__edge.selected { + stroke: #555; + } + +.react-flow__edge.animated { + stroke-dasharray: 5; + -webkit-animation: dashdraw 0.5s linear infinite; + animation: dashdraw 0.5s linear infinite; + } + +.react-flow__edge.connection { + stroke: '#ddd'; + pointer-events: none; + } + +@-webkit-keyframes dashdraw { + from {stroke-dashoffset: 10} +} + +@keyframes dashdraw { + from {stroke-dashoffset: 10} +} + +.react-flow__nodes { + width: 100%; + height: 100%; + position: absolute; + z-index: 3; + pointer-events: none; + transform-origin: 0 0; +} + +.react-flow__node { + position: absolute; + color: #222; + font-family: sans-serif; + font-size: 12px; + text-align: center; + cursor: -webkit-grab; + cursor: grab; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: all; + transform-origin: 0 0; +} + +.react-flow__node:hover > * { + box-shadow: 0 1px 5px 2px rgba(0, 0, 0, 0.08); + } + +.react-flow__node.selected > * { + box-shadow: 0 0 0 2px #555; + } + +.react-flow__handle { + position: absolute; + width: 10px; + height: 8px; + background: rgba(255, 255, 255, 0.4); + cursor: crosshair; +} + +.react-flow__handle.bottom { + top: auto; + left: 50%; + bottom: 0; + transform: translate(-50%, 0); + } + +.react-flow__handle.top { + left: 50%; + top: 0; + transform: translate(-50%, 0); + } + +.react-flow__handle.left { + top: 50%; + left: 0; + transform: translate(0, -50%); + + } + +.react-flow__handle.right { + right: 0; + top: 50%; + transform: translate(0, -50%); + } + +.react-flow__nodesselection { + z-index: 3; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + transform-origin: left top; + pointer-events: none; +} + +.react-flow__nodesselection-rect { + position: absolute; + background: rgba(0, 89, 220, 0.08); + border: 1px dotted rgba(0, 89, 220, 0.8); + pointer-events: all; + } + +.react-flow__controls { + box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.08); +} + +.react-flow__controls-button { + background: #fefefe; + border-bottom: 1px solid #eee; + display: flex; + justify-content: center; + align-items: center; + width: 16px; + height: 16px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + padding: 5px; + } + +.react-flow__controls-button img { + width: 100%; + } + +.react-flow__controls-button:hover { + background: #f4f4f4; + } diff --git a/dist/plugins/index.js b/dist/plugins/index.js new file mode 100644 index 00000000..e969e484 --- /dev/null +++ b/dist/plugins/index.js @@ -0,0 +1,8 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],e):e((t=t||self)["ReactFlow Plugins"]={},t.React)}(this,(function(t,e){"use strict";var n,r="default"in e?e.default:e;function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function a(t){for(var e=1;e=0||(i[n]=t[n]);return i}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i}function s(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e=0;e--){var n=t[e][f];n.modified||(Array.isArray(n.base)?R(n)&&P(n):z(n)&&P(n))}}function z(t){for(var e=t.base,n=t.draft,r=Object.keys(n),i=r.length-1;i>=0;i--){var o=r[i],a=e[o];if(void 0===a&&!w(e,o))return!0;var u=n[o],s=u&&u[f];if(s?s.base!==a:!b(u,a))return!0}return r.length!==Object.keys(e).length}function R(t){var e=t.draft;if(e.length!==t.base.length)return!0;var n=Object.getOwnPropertyDescriptor(e,e.length-1);return!(!n||n.get)}var C=Object.freeze({willFinalize:function(t,e,n){t.drafts.forEach((function(t){t[f].finalizing=!0})),n?h(e)&&e[f].scope===t&&M(t.drafts):(t.patches&&function t(e){if(!e||"object"!=typeof e)return;var n=e[f];if(!n)return;var r=n.base;var i=n.draft;var o=n.assigned;if(Array.isArray(e)){if(R(n)){if(P(n),o.length=!0,i.lengthl&&a[f-1]===u[f+c-1];)--f;for(var h=l;h=f;--v){var g=e.concat([v]);n[y+v-f]={op:"add",path:g,value:u[v]},d&&r.push({op:"remove",path:g})}d||r.push({op:"replace",path:e.concat(["length"]),value:a.length})}(t,e,n,r):function(t,e,n,r){var i=t.base,o=t.copy;g(t.assigned,(function(t,a){var u=i[t],s=o[t],c=a?t in i?"replace":"add":"remove";if(u!==s||"replace"!==c){var l=e.concat(t);n.push("remove"===c?{op:c,path:l}:{op:c,path:l,value:s}),r.push("add"===c?{op:"remove",path:l}:"remove"===c?{op:"add",path:l,value:u}:{op:"replace",path:l,value:u})}}))}(t,e,n,r)}function H(t,e){for(var n=0;n0;)r[i]=arguments[i+1];return a.produce(t,(function(t){return e.call.apply(e,[n,t].concat(r))}))}}if("function"!=typeof e)throw new Error("The first or second argument to `produce` must be a function");if(void 0!==n&&"function"!=typeof n)throw new Error("The third argument to `produce` must be a function or undefined");if(p(t)){var u=_.enter(),s=this.createProxy(t),l=!0;try{r=e(s),l=!1}finally{l?u.revoke():u.leave()}return r instanceof Promise?r.then((function(t){return u.usePatches(n),i.processResult(t,u)}),(function(t){throw u.revoke(),t})):(u.usePatches(n),this.processResult(r,u))}return void 0===(r=e(t))?t:r!==c?r:void 0},U.prototype.createDraft=function(t){if(!p(t))throw new Error("First argument to `createDraft` must be a plain object, an array, or an immerable object");var e=_.enter(),n=this.createProxy(t);return n[f].isManual=!0,e.leave(),n},U.prototype.finishDraft=function(t,e){var n=t&&t[f];if(!n||!n.isManual)throw new Error("First argument to `finishDraft` must be a draft returned by `createDraft`");if(n.finalized)throw new Error("The given draft is already finalized");var r=n.scope;return r.usePatches(e),this.processResult(void 0,r)},U.prototype.setAutoFreeze=function(t){this.autoFreeze=t},U.prototype.setUseProxies=function(t){this.useProxies=t,d(this,t?L:C)},U.prototype.applyPatches=function(t,e){return h(t)?H(t,e):this.produce(t,(function(t){return H(t,e)}))},U.prototype.processResult=function(t,e){var n=e.drafts[0],r=void 0!==t&&t!==n;if(this.willFinalize(e,t,r),r){if(n[f].modified)throw e.revoke(),new Error("An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.");p(t)&&(t=this.finalize(t,null,e)),e.patches&&(e.patches.push({op:"replace",path:[],value:t}),e.inversePatches.push({op:"replace",path:[],value:n[f].base}))}else t=this.finalize(n,[],e);return e.revoke(),e.patches&&e.patchListener(e.patches,e.inversePatches),t!==c?t:void 0},U.prototype.finalize=function(t,e,n){var r=this,i=t[f];if(!i)return Object.isFrozen(t)?t:this.finalizeTree(t,null,n);if(i.scope!==n)return t;if(!i.modified)return i.base;if(!i.finalized){if(i.finalized=!0,this.finalizeTree(i.draft,e,n),this.onDelete)if(this.useProxies){var o=i.assigned;for(var a in o)o[a]||this.onDelete(i,a)}else{var u=i.base,s=i.copy;g(u,(function(t){w(s,t)||r.onDelete(i,t)}))}this.onCopy&&this.onCopy(i),this.autoFreeze&&n.canAutoFreeze&&Object.freeze(i.copy),e&&n.patches&&F(i,e,n.patches,n.inversePatches)}return i.copy},U.prototype.finalizeTree=function(t,e,n){var r=this,i=t[f];i&&(this.useProxies||(i.copy=v(i.draft,!0)),t=i.copy);var o=!!e&&!!n.patches,a=function(u,s,c){if(s===c)throw Error("Immer forbids circular references");var l=!!i&&c===t;if(h(s)){var f=l&&o&&!i.assigned[u]?e.concat(u):null;if(h(s=r.finalize(s,f,n))&&(n.canAutoFreeze=!1),Array.isArray(c)||m(c,u)?c[u]=s:Object.defineProperty(c,u,{value:s}),l&&s===i.base[u])return}else{if(l&&b(s,i.base[u]))return;p(s)&&!Object.isFrozen(s)&&g(s,a)}l&&r.onAssign&&r.onAssign(i,u,s)};return g(t,a),t};var $=new U,K=$.setAutoFreeze.bind($),Z=($.setUseProxies.bind($),$.applyPatches.bind($),$.createDraft.bind($)),W=$.finishDraft.bind($);var J=function(t){var e,n=t.Symbol;return"function"==typeof n?n.observable?e=n.observable:(e=n("observable"),n.observable=e):e="@@observable",e}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof module?module:Function("return this")()),G=function(){return Math.random().toString(36).substring(7).split("").join(".")},Q={INIT:"@@redux/INIT"+G(),REPLACE:"@@redux/REPLACE"+G(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+G()}};function tt(t,e,n){var r;if("function"==typeof e&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function.");if("function"==typeof e&&void 0===n&&(n=e,e=void 0),void 0!==n){if("function"!=typeof n)throw new Error("Expected the enhancer to be a function.");return n(tt)(t,e)}if("function"!=typeof t)throw new Error("Expected the reducer to be a function.");var i=t,o=e,a=[],u=a,s=!1;function c(){u===a&&(u=a.slice())}function l(){if(s)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return o}function f(t){if("function"!=typeof t)throw new Error("Expected the listener to be a function.");if(s)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");var e=!0;return c(),u.push(t),function(){if(e){if(s)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribe(listener) for more details.");e=!1,c();var n=u.indexOf(t);u.splice(n,1)}}}function h(t){if(!function(t){if("object"!=typeof t||null===t)return!1;for(var e=t;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===t.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(s)throw new Error("Reducers may not dispatch actions.");try{s=!0,o=i(o,t)}finally{s=!1}for(var e=a=u,n=0;n=0?(this.lastItem=this.list[e],this.list[e].val):void 0},ct.prototype.set=function(t,e){var n;return this.lastItem&&this.isEqual(this.lastItem.key,t)?(this.lastItem.val=e,this):(n=this.indexOf(t))>=0?(this.lastItem=this.list[n],this.list[n].val=e,this):(this.lastItem={key:t,val:e},this.list.push(this.lastItem),this.size++,this)},ct.prototype.delete=function(t){var e;if(this.lastItem&&this.isEqual(this.lastItem.key,t)&&(this.lastItem=void 0),(e=this.indexOf(t))>=0)return this.size--,this.list.splice(e,1)[0]},ct.prototype.has=function(t){var e;return!(!this.lastItem||!this.isEqual(this.lastItem.key,t))||(e=this.indexOf(t))>=0&&(this.lastItem=this.list[e],!0)},ct.prototype.forEach=function(t,e){var n;for(n=0;n0&&(l[c]={cacheItem:s,arg:arguments[c]},f?pt(n,l):n.push(l),n.length>t&&dt(n.shift())),i.wasMemoized=f,i.numArgs=c+1,a};return i.limit=t,i.wasMemoized=!1,i.cache=e,i.lru=n,i}};function pt(t,e){var n,r,i,o,a,u=t.length,s=e.length;for(r=0;r=0&&(!(e=(i=t[n]).cacheItem.get(i.arg))||!e.size);n--)i.cacheItem.delete(i.arg)}var yt=e.createContext(),vt="undefined"!=typeof window?e.useLayoutEffect:e.useEffect;var gt,mt=(gt=yt,function(t){var n=e.useContext(gt),r=e.useRef(t),i=e.useRef(),o=e.useRef(!0),a=e.useRef(),u=e.useReducer((function(t){return t+1}),0)[1];if(a.current||r.current!==t||void 0===i.current)try{i.current=t(n.getState())}catch(t){var s="An error occurred trying to map state in a useStoreState hook: "+t.message+".";throw a.current&&(s+="\nThis error may be related to the following error:\n"+a.current.stack+"\n\nOriginal stack trace:"),new Error(s)}return vt((function(){r.current=t,a.current=void 0})),vt((function(){var t=function(){try{var t=r.current(n.getState());if(t===i.current)return;i.current=t}catch(t){a.current=t}o.current&&u({})},e=n.subscribe(t);return t(),function(){o.current=!1,e()}}),[]),i.current});function wt(){return(wt=Object.assign||function(t){for(var e=1;e0?function(t,e){return d.reduce((function(t,n){var r=n.parentPath,i=n.key,o=n.reducer;return u(r,t,(function(t){return t[i]=o(t[i],e),t}))}),t)}(n,e):n;return t!==r&&p.forEach((function(t){var e=t.parentPath;(0,t.createComputedProperty)(Pt(e,r))})),r}))}}K(!1);var Mt=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t){ +/*! + Copyright (c) 2017 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames + */ +!function(){var e={}.hasOwnProperty;function n(){for(var t=[],r=0;r=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function Tt(t,e){for(var n,r=0,i=t.length;r0)for(var n,r,i=new Array(n),o=0;o=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),Vt.hasOwnProperty(e)?{space:Vt[e],local:t}:t}function Lt(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===qt&&e.documentElement.namespaceURI===qt?e.createElement(t):e.createElementNS(n,t)}}function Ft(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Ht(t){var e=Yt(t);return(e.local?Ft:Lt)(e)}function Bt(){}function Ut(t){return null==t?Bt:function(){return this.querySelector(t)}}function $t(){return[]}function Kt(t){return null==t?$t:function(){return this.querySelectorAll(t)}}function Zt(t){return function(){return this.matches(t)}}function Wt(t){return new Array(t.length)}function Jt(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}Jt.prototype={constructor:Jt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var Gt="$";function Qt(t,e,n,r,i,o){for(var a,u=0,s=e.length,c=o.length;ue?1:t>=e?0:NaN}function ne(t){return function(){this.removeAttribute(t)}}function re(t){return function(){this.removeAttributeNS(t.space,t.local)}}function ie(t,e){return function(){this.setAttribute(t,e)}}function oe(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function ae(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function ue(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function se(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ce(t){return function(){this.style.removeProperty(t)}}function le(t,e,n){return function(){this.style.setProperty(t,e,n)}}function fe(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function he(t,e){return t.style.getPropertyValue(e)||se(t).getComputedStyle(t,null).getPropertyValue(e)}function pe(t){return function(){delete this[t]}}function de(t,e){return function(){this[t]=e}}function ye(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function ve(t){return t.trim().split(/^|\s+/)}function ge(t){return t.classList||new me(t)}function me(t){this._node=t,this._names=ve(t.getAttribute("class")||"")}function we(t,e){for(var n=ge(t),r=-1,i=e.length;++r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var De={};"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(De={mouseenter:"mouseover",mouseleave:"mouseout"}));function Te(t,e,n){return t=Xe(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function Xe(t,e,n){return function(r){try{t.call(this,this.__data__,e,n)}finally{}}}function qe(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,o=e.length;r=_&&(_=b+1);!(w=g[_])&&++_=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=ee);for(var n=this._groups,r=n.length,i=new Array(r),o=0;o1?this.each((null==e?ce:"function"==typeof e?fe:le)(t,e,null==n?"":n)):he(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?pe:"function"==typeof e?ye:de)(t,e)):this.node()[t]},classed:function(t,e){var n=ve(t+"");if(arguments.length<2){for(var r=ge(this.node()),i=-1,o=n.length;++i=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}(t+""),a=o.length;if(!(arguments.length<2)){for(u=e?Ve:qe,null==n&&(n=!1),r=0;r>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?new dn(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?new dn(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=tn.exec(t))?new dn(e[1],e[2],e[3],1):(e=en.exec(t))?new dn(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=nn.exec(t))?hn(e[1],e[2],e[3],e[4]):(e=rn.exec(t))?hn(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=on.exec(t))?mn(e[1],e[2]/100,e[3]/100,1):(e=an.exec(t))?mn(e[1],e[2]/100,e[3]/100,e[4]):un.hasOwnProperty(t)?fn(un[t]):"transparent"===t?new dn(NaN,NaN,NaN,0):null}function fn(t){return new dn(t>>16&255,t>>8&255,255&t,1)}function hn(t,e,n,r){return r<=0&&(t=e=n=NaN),new dn(t,e,n,r)}function pn(t,e,n,r){return 1===arguments.length?((i=t)instanceof Ze||(i=ln(i)),i?new dn((i=i.rgb()).r,i.g,i.b,i.opacity):new dn):new dn(t,e,n,null==r?1:r);var i}function dn(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function yn(){return"#"+gn(this.r)+gn(this.g)+gn(this.b)}function vn(){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 gn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function mn(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new bn(t,e,n,r)}function wn(t){if(t instanceof bn)return new bn(t.h,t.s,t.l,t.opacity);if(t instanceof Ze||(t=ln(t)),!t)return new bn;if(t instanceof bn)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,u=o-i,s=(o+i)/2;return u?(a=e===o?(n-r)/u+6*(n0&&s<1?0:a,new bn(a,u,s,t.opacity)}function bn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function _n(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function xn(t){return function(){return t}}function En(t){return 1==(t=+t)?On:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):xn(isNaN(e)?n:e)}}function On(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):xn(isNaN(t)?e:t)}$e(Ze,ln,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:sn,formatHex:sn,formatHsl:function(){return wn(this).formatHsl()},formatRgb:cn,toString:cn}),$e(dn,pn,Ke(Ze,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new dn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new dn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:yn,formatHex:yn,formatRgb:vn,toString:vn})),$e(bn,(function(t,e,n,r){return 1===arguments.length?wn(t):new bn(t,e,n,null==r?1:r)}),Ke(Ze,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new bn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new bn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new dn(_n(t>=240?t-240:t+120,i,r),_n(t,i,r),_n(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var An=function t(e){var n=En(e);function r(t,e){var r=n((t=pn(t)).r,(e=pn(e)).r),i=n(t.g,e.g),o=n(t.b,e.b),a=On(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=o(e),t.opacity=a(e),t+""}}return r.gamma=t,r}(1);function Sn(t,e){return e-=t=+t,function(n){return t+e*n}}var kn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Pn=new RegExp(kn.source,"g");function jn(t,e){var n,r,i,o=kn.lastIndex=Pn.lastIndex=0,a=-1,u=[],s=[];for(t+="",e+="";(n=kn.exec(t))&&(r=Pn.exec(e));)(i=r.index)>o&&(i=e.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(n=n[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,s.push({i:a,x:Sn(n,r)})),o=Pn.lastIndex;return o180?e+=360:e-t>180&&(t+=360),o.push({i:n.push(i(n)+"rotate(",null,r)-2,x:Sn(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(o.rotate,a.rotate,u,s),function(t,e,n,o){t!==e?o.push({i:n.push(i(n)+"skewX(",null,r)-2,x:Sn(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(o.skewX,a.skewX,u,s),function(t,e,n,r,o,a){if(t!==n||e!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:Sn(t,n)},{i:u-2,x:Sn(e,r)})}else 1===n&&1===r||o.push(i(o)+"scale("+n+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,s),o=a=null,function(t){for(var e,n=-1,r=s.length;++n=0&&e._call.call(null,t),e=e._next;--Ln}()}finally{Ln=0,function(){var t,e,n=Xn,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Xn=e);qn=t,rr(r)}(),$n=0}}function nr(){var t=Zn.now(),e=t-Un;e>Bn&&(Kn-=e,Un=t)}function rr(t){Ln||(Fn&&(Fn=clearTimeout(Fn)),t-$n>24?(t<1/0&&(Fn=setTimeout(er,t-Zn.now()-Kn)),Hn&&(Hn=clearInterval(Hn))):(Hn||(Un=Zn.now(),Hn=setInterval(nr,Bn)),Ln=1,Wn(er)))}function ir(t,e,n){var r=new Qn;return e=null==e?0:+e,r.restart((function(n){r.stop(),t(n+e)}),e,n),r}Qn.prototype=tr.prototype={constructor:Qn,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Jn():+n)+(null==e?0:+e),this._next||qn===this||(qn?qn._next=this:Xn=this,qn=this),this._call=t,this._time=n,rr()},stop:function(){this._call&&(this._call=null,this._time=1/0,rr())}};var or=Rt("start","end","cancel","interrupt"),ar=[],ur=0,sr=1,cr=2,lr=3,fr=4,hr=5,pr=6;function dr(t,e,n,r,i,o){var a=t.__transition;if(a){if(n in a)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function o(s){var c,l,f,h;if(n.state!==sr)return u();for(c in i)if((h=i[c]).name===n.name){if(h.state===lr)return ir(o);h.state===fr?(h.state=pr,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+cur)throw new Error("too late; already scheduled");return n}function vr(t,e){var n=gr(t,e);if(n.state>lr)throw new Error("too late; already running");return n}function gr(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function mr(t,e){var n,r;return function(){var i=vr(this,t),o=i.tween;if(o!==n)for(var a=0,u=(r=n=o).length;a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?yr:vr;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(e,n),a.on=i}}(n,t,e))},attr:function(t,e){var n=Yt(t),r="transform"===n?Yn:_r;return this.attrTween(t,"function"==typeof e?(n.local?kr:Sr)(n,r,br(this,"attr."+t,e)):null==e?(n.local?Er:xr)(n):(n.local?Ar:Or)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=Yt(t);return this.tween(n,(r.local?Pr:jr)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?Vn:_r;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var o=he(this,t),a=(this.style.removeProperty(t),he(this,t));return o===a?null:o===n&&a===r?i:i=e(n=o,r=a)}}(t,r)).on("end.style."+t,Cr(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,o;return function(){var a=he(this,t),u=n(this),s=u+"";return null==u&&(this.style.removeProperty(t),s=u=he(this,t)),a===s?null:a===r&&s===i?o:(i=s,o=e(r=a,u))}}(t,r,br(this,"style."+t,e))).each(function(t,e){var n,r,i,o,a="style."+e,u="end."+a;return function(){var s=vr(this,t),c=s.on,l=null==s.value[a]?o||(o=Cr(e)):void 0;c===n&&i===l||(r=(n=c).copy()).on(u,i=l),s.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,o=n+"";return function(){var a=he(this,t);return a===o?null:a===r?i:i=e(r=a,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,function(t,e,n){var r,i;function o(){var o=e.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,e,n){return function(r){this.style.setProperty(t,e(r),n)}}(t,o,n)),r}return o._value=e,o}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(br(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=gr(this.node(),n).tween,o=0,a=i.length;ocr&&n.state0){var r=O.internals.actionCreatorDict[e.type];O.internals.listenerActionMap[e.type].forEach((function(t){t({type:r?r.type:e.type,payload:e.payload,error:e.error,result:e.result})}))}return n}}}]);v&&S.push((function(){return function(){return function(t){null!=t&&E.push(t)}}}));var k=r||(o&&"undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({name:m}):it),P=tt(O.internals.reducer,O.internals.defaultState,k.apply(void 0,[ot.apply(void 0,S)].concat(c)));P.subscribe((function(){O.internals.computedState.isInReducer=!1})),O.dispatch=P.dispatch,O.getState=P.getState;var j=function(){Object.keys(P.dispatch).forEach((function(t){delete P.dispatch[t]})),Object.keys(O.internals.actionCreators).forEach((function(t){P.dispatch[t]=O.internals.actionCreators[t]}))};j();var N=function(t){var e=P.getState();t&&delete e[t],A(P.getState()),P.replaceReducer(O.internals.reducer),O.internals.actionCreatorDict["@action.easyPeasyReplaceState"](O.internals.defaultState),j()};return Object.assign(P,{addModel:function(t,e){x[t]&&"production"!==process.env.NODE_ENV&&(console.warn('easy-peasy: The store model already contains a model definition for "'+t+'"'),P.removeModel(t)),x[t]=e,N()},clearMockedActions:function(){E=[]},getActions:function(){return O.internals.actionCreators},getListeners:function(){return O.internals.listenerActionCreators},getMockedActions:function(){return[].concat(E)},reconfigure:function(t){x=_(t),N()},removeModel:function(t){x[t]?(delete x[t],N(t)):"production"!==process.env.NODE_ENV&&console.warn('easy-peasy: The store model does not contain a model definition for "'+t+'"')}})}(a({width:0,height:0,transform:[0,0,1],nodes:[],edges:[],selectedElements:[],selectedNodesBbox:{x:0,y:0,width:0,height:0},d3Zoom:null,d3Selection:null,d3Initialised:!1,nodesSelectionActive:!1,selectionActive:!1,selection:{},connectionSourceId:null,connectionPosition:{x:0,y:0},onConnect:function(){}},Br)),$r=function(t){var e=t.reduce((function(t,e){var n=e.__rg.position,r=n.x+e.__rg.width,i=n.y+e.__rg.height;return n.xt.maxX&&(t.maxX=r),n.yt.maxY&&(t.maxY=i),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}},Kr=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[0,0,1],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return t.filter((function(t){var i=(e.x-n[0])*(1/n[2]),o=(e.y-n[1])*(1/n[2]),a=e.width*(1/n[2]),u=e.height*(1/n[2]),s=t.__rg,c=s.position,l=s.width,f=s.height,h=r?-l:l,p=r?0:f,d=r?l:0,y=r?f:0;return c.x+d>i&&c.x+ho&&c.y+p0&&void 0!==arguments[0]?arguments[0]:{},e=t.padding,n=void 0===e?0:e,r=Ur.getState(),i=$r(r.nodes),o=Math.max(i.width,i.height),a=Math.min(r.width,r.height)/(o+o*n),u=i.x+i.width/2,s=i.y+i.height/2,c=[r.width/2-u*a,r.height/2-s*a],l=Fr.translate(c[0],c[1]).scale(a);r.d3Selection.call(r.d3Zoom.transform,l)},Jr=function(){var t=Ur.getState();t.d3Zoom.scaleTo(t.d3Selection,t.transform[2]+.2)},Gr=function(){var t=Ur.getState();t.d3Zoom.scaleTo(t.d3Selection,t.transform[2]-.2)},Qr={position:"absolute",zIndex:5,bottom:10,right:10,width:200},ti={position:"absolute",zIndex:5,bottom:10,left:10};t.Controls=function(t){var e=t.style,n=t.className,i=Mt("react-flow__controls",n);return r.createElement("div",{className:i,style:a({},ti,{},e)},r.createElement("div",{className:"react-flow__controls-button react-flow__controls-zoomin",onClick:Jr},r.createElement("img",{src:''})),r.createElement("div",{className:"react-flow__controls-button react-flow__controls-zoomout",onClick:Gr},r.createElement("img",{src:''})),r.createElement("div",{className:"react-flow__controls-button react-flow__controls-fitview",onClick:Wr},r.createElement("img",{src:''})))},t.MiniMap=function(t){var n=t.style,i=void 0===n?{}:n,o=t.className,u=t.bgColor,s=void 0===u?"#f8f8f8":u,c=t.nodeColor,l=void 0===c?"#ddd":c,f=e.useRef(null),h=mt((function(t){return{width:t.width,height:t.height,nodes:t.nodes,transform:t.transform}})),p=Mt("react-flow__minimap",o),d=h.nodes.map((function(t){return t.__rg.position})),y=i.width||Qr.width,v=h.height/(h.width||1)*y,g={x:0,y:0,width:h.width,height:h.height},m=y/h.width,w=function(t){return!!(t&&t.constructor&&t.call&&t.apply)}(l)?l:function(){return l};return e.useEffect((function(){if(f){var t=f.current.getContext("2d"),e=Kr(h.nodes,g,h.transform,!0);t.fillStyle=s,t.fillRect(0,0,y,v),e.forEach((function(e){var n=e.__rg.position,r=h.transform[0],i=h.transform[1],o=n.x*h.transform[2]+r,a=n.y*h.transform[2]+i;t.fillStyle=w(e),t.fillRect(o*m,a*m,e.__rg.width*m*h.transform[2],e.__rg.height*m*h.transform[2])}))}}),[d,h.transform,v]),r.createElement("canvas",{style:a({},Qr,{},i,{height:v}),width:y,height:v,className:p,ref:f})},Object.defineProperty(t,"__esModule",{value:!0})})); +//# sourceMappingURL=index.js.map diff --git a/dist/plugins/index.js.map b/dist/plugins/index.js.map new file mode 100644 index 00000000..2295ca8c --- /dev/null +++ b/dist/plugins/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../node_modules/immer-peasy/dist/immer.module.js","../../node_modules/symbol-observable/es/index.js","../../node_modules/symbol-observable/es/ponyfill.js","../../node_modules/redux/es/redux.js","../../node_modules/redux-thunk/es/index.js","../../node_modules/map-or-similar/src/similar.js","../../node_modules/map-or-similar/src/map-or-similar.js","../../node_modules/memoizerific/src/memoizerific.js","../../node_modules/easy-peasy/dist/easy-peasy.esm.js","../../node_modules/classnames/index.js","../../node_modules/d3-dispatch/src/dispatch.js","../../node_modules/d3-selection/src/namespaces.js","../../node_modules/d3-selection/src/namespace.js","../../node_modules/d3-selection/src/creator.js","../../node_modules/d3-selection/src/selector.js","../../node_modules/d3-selection/src/selectorAll.js","../../node_modules/d3-selection/src/matcher.js","../../node_modules/d3-selection/src/selection/sparse.js","../../node_modules/d3-selection/src/selection/enter.js","../../node_modules/d3-selection/src/selection/data.js","../../node_modules/d3-selection/src/selection/sort.js","../../node_modules/d3-selection/src/selection/attr.js","../../node_modules/d3-selection/src/window.js","../../node_modules/d3-selection/src/selection/style.js","../../node_modules/d3-selection/src/selection/property.js","../../node_modules/d3-selection/src/selection/classed.js","../../node_modules/d3-selection/src/selection/text.js","../../node_modules/d3-selection/src/selection/html.js","../../node_modules/d3-selection/src/selection/raise.js","../../node_modules/d3-selection/src/selection/lower.js","../../node_modules/d3-selection/src/selection/insert.js","../../node_modules/d3-selection/src/selection/remove.js","../../node_modules/d3-selection/src/selection/clone.js","../../node_modules/d3-selection/src/selection/on.js","../../node_modules/d3-selection/src/selection/dispatch.js","../../node_modules/d3-selection/src/selection/index.js","../../node_modules/d3-color/src/define.js","../../node_modules/d3-color/src/color.js","../../node_modules/d3-selection/src/selection/select.js","../../node_modules/d3-selection/src/selection/selectAll.js","../../node_modules/d3-selection/src/selection/filter.js","../../node_modules/d3-selection/src/constant.js","../../node_modules/d3-selection/src/selection/exit.js","../../node_modules/d3-selection/src/selection/join.js","../../node_modules/d3-selection/src/selection/merge.js","../../node_modules/d3-selection/src/selection/order.js","../../node_modules/d3-selection/src/selection/call.js","../../node_modules/d3-selection/src/selection/nodes.js","../../node_modules/d3-selection/src/selection/node.js","../../node_modules/d3-selection/src/selection/size.js","../../node_modules/d3-selection/src/selection/empty.js","../../node_modules/d3-selection/src/selection/each.js","../../node_modules/d3-selection/src/selection/append.js","../../node_modules/d3-selection/src/selection/datum.js","../../node_modules/d3-interpolate/src/constant.js","../../node_modules/d3-interpolate/src/color.js","../../node_modules/d3-interpolate/src/rgb.js","../../node_modules/d3-interpolate/src/number.js","../../node_modules/d3-interpolate/src/string.js","../../node_modules/d3-interpolate/src/transform/decompose.js","../../node_modules/d3-interpolate/src/transform/parse.js","../../node_modules/d3-interpolate/src/transform/index.js","../../node_modules/d3-timer/src/timer.js","../../node_modules/d3-timer/src/timeout.js","../../node_modules/d3-transition/src/transition/schedule.js","../../node_modules/d3-transition/src/transition/tween.js","../../node_modules/d3-transition/src/transition/interpolate.js","../../node_modules/d3-transition/src/transition/attr.js","../../node_modules/d3-transition/src/transition/attrTween.js","../../node_modules/d3-transition/src/transition/delay.js","../../node_modules/d3-transition/src/transition/duration.js","../../node_modules/d3-transition/src/transition/selection.js","../../node_modules/d3-transition/src/transition/style.js","../../node_modules/d3-transition/src/transition/index.js","../../node_modules/d3-transition/src/transition/select.js","../../node_modules/d3-transition/src/transition/selectAll.js","../../node_modules/d3-transition/src/transition/filter.js","../../node_modules/d3-transition/src/transition/merge.js","../../node_modules/d3-transition/src/transition/transition.js","../../node_modules/d3-transition/src/transition/on.js","../../node_modules/d3-transition/src/transition/styleTween.js","../../node_modules/d3-transition/src/transition/text.js","../../node_modules/d3-transition/src/transition/remove.js","../../node_modules/d3-transition/src/transition/ease.js","../../node_modules/d3-transition/src/transition/end.js","../../node_modules/d3-transition/src/selection/transition.js","../../node_modules/d3-ease/src/cubic.js","../../node_modules/d3-zoom/src/transform.js","../../node_modules/d3-transition/src/selection/index.js","../../node_modules/d3-transition/src/selection/interrupt.js","../../node_modules/d3-transition/src/interrupt.js","../../node_modules/fast-deep-equal/index.js","../../src/store/actions.js","../../src/store/index.js","../../src/utils/graph.js","../../src/plugins/MiniMap/index.js","../../src/plugins/Controls/index.js","../../src/utils/index.js"],"sourcesContent":["var obj;\nvar NOTHING = typeof Symbol !== \"undefined\" ? Symbol(\"immer-nothing\") : ( obj = {}, obj[\"immer-nothing\"] = true, obj );\nvar DRAFTABLE = typeof Symbol !== \"undefined\" && Symbol.for ? Symbol.for(\"immer-draftable\") : \"__$immer_draftable\";\nvar DRAFT_STATE = typeof Symbol !== \"undefined\" && Symbol.for ? Symbol.for(\"immer-state\") : \"__$immer_state\";\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value || typeof value !== \"object\") { return false; }\n if (Array.isArray(value)) { return true; }\n var proto = Object.getPrototypeOf(value);\n if (!proto || proto === Object.prototype) { return true; }\n return !!value[DRAFTABLE] || !!value.constructor[DRAFTABLE];\n}\nfunction original(value) {\n if (value && value[DRAFT_STATE]) {\n return value[DRAFT_STATE].base;\n } // otherwise return undefined\n\n}\nvar assign = Object.assign || function assign(target, value) {\n for (var key in value) {\n if (has(value, key)) {\n target[key] = value[key];\n }\n }\n\n return target;\n};\nvar ownKeys = typeof Reflect !== \"undefined\" && Reflect.ownKeys ? Reflect.ownKeys : typeof Object.getOwnPropertySymbols !== \"undefined\" ? function (obj) { return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj)); } : Object.getOwnPropertyNames;\nfunction shallowCopy(base, invokeGetters) {\n if ( invokeGetters === void 0 ) invokeGetters = false;\n\n if (Array.isArray(base)) { return base.slice(); }\n var clone = Object.create(Object.getPrototypeOf(base));\n ownKeys(base).forEach(function (key) {\n if (key === DRAFT_STATE) {\n return; // Never copy over draft state.\n }\n\n var desc = Object.getOwnPropertyDescriptor(base, key);\n var value = desc.value;\n\n if (desc.get) {\n if (invokeGetters) {\n value = desc.get.call(base);\n }\n }\n\n if (desc.enumerable) {\n clone[key] = value;\n } else if (invokeGetters) {\n Object.defineProperty(clone, key, {\n value: value,\n writable: true,\n configurable: true\n });\n }\n });\n return clone;\n}\nfunction each(value, cb) {\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) { cb(i, value[i], value); }\n } else {\n ownKeys(value).forEach(function (key) { return cb(key, value[key], value); });\n }\n}\nfunction isEnumerable(base, prop) {\n var desc = Object.getOwnPropertyDescriptor(base, prop);\n return !!desc && desc.enumerable;\n}\nfunction has(thing, prop) {\n return Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction is(x, y) {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\n/** Each scope represents a `produce` call. */\n\nvar ImmerScope = function ImmerScope(parent) {\n this.drafts = [];\n this.parent = parent; // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n\n this.canAutoFreeze = true; // To avoid prototype lookups:\n\n this.patches = null;\n};\n\nImmerScope.prototype.usePatches = function usePatches (patchListener) {\n if (patchListener) {\n this.patches = [];\n this.inversePatches = [];\n this.patchListener = patchListener;\n }\n};\n\nImmerScope.prototype.revoke = function revoke$1 () {\n this.leave();\n this.drafts.forEach(revoke);\n this.drafts = null; // Make draft-related methods throw.\n};\n\nImmerScope.prototype.leave = function leave () {\n if (this === ImmerScope.current) {\n ImmerScope.current = this.parent;\n }\n};\nImmerScope.current = null;\n\nImmerScope.enter = function () {\n return this.current = new ImmerScope(this.current);\n};\n\nfunction revoke(draft) {\n draft[DRAFT_STATE].revoke();\n}\n\n// but share them all instead\n\nvar descriptors = {};\nfunction willFinalize(scope, result, isReplaced) {\n scope.drafts.forEach(function (draft) {\n draft[DRAFT_STATE].finalizing = true;\n });\n\n if (!isReplaced) {\n if (scope.patches) {\n markChangesRecursively(scope.drafts[0]);\n } // This is faster when we don't care about which attributes changed.\n\n\n markChangesSweep(scope.drafts);\n } // When a child draft is returned, look for changes.\n else if (isDraft(result) && result[DRAFT_STATE].scope === scope) {\n markChangesSweep(scope.drafts);\n }\n}\nfunction createProxy(base, parent) {\n var isArray = Array.isArray(base);\n var draft = clonePotentialDraft(base);\n each(draft, function (prop) {\n proxyProperty(draft, prop, isArray || isEnumerable(base, prop));\n }); // See \"proxy.js\" for property documentation.\n\n var scope = parent ? parent.scope : ImmerScope.current;\n var state = {\n scope: scope,\n modified: false,\n finalizing: false,\n // es5 only\n finalized: false,\n assigned: {},\n parent: parent,\n base: base,\n draft: draft,\n copy: null,\n revoke: revoke$1,\n revoked: false // es5 only\n\n };\n createHiddenProperty(draft, DRAFT_STATE, state);\n scope.drafts.push(draft);\n return draft;\n}\n\nfunction revoke$1() {\n this.revoked = true;\n}\n\nfunction source(state) {\n return state.copy || state.base;\n} // Access a property without creating an Immer draft.\n\n\nfunction peek(draft, prop) {\n var state = draft[DRAFT_STATE];\n\n if (state && !state.finalizing) {\n state.finalizing = true;\n var value = draft[prop];\n state.finalizing = false;\n return value;\n }\n\n return draft[prop];\n}\n\nfunction get(state, prop) {\n assertUnrevoked(state);\n var value = peek(source(state), prop);\n if (state.finalizing) { return value; } // Create a draft if the value is unmodified.\n\n if (value === peek(state.base, prop) && isDraftable(value)) {\n prepareCopy(state);\n return state.copy[prop] = createProxy(value, state);\n }\n\n return value;\n}\n\nfunction set(state, prop, value) {\n assertUnrevoked(state);\n state.assigned[prop] = true;\n\n if (!state.modified) {\n if (is(value, peek(source(state), prop))) { return; }\n markChanged(state);\n prepareCopy(state);\n }\n\n state.copy[prop] = value;\n}\n\nfunction markChanged(state) {\n if (!state.modified) {\n state.modified = true;\n if (state.parent) { markChanged(state.parent); }\n }\n}\n\nfunction prepareCopy(state) {\n if (!state.copy) { state.copy = clonePotentialDraft(state.base); }\n}\n\nfunction clonePotentialDraft(base) {\n var state = base && base[DRAFT_STATE];\n\n if (state) {\n state.finalizing = true;\n var draft = shallowCopy(state.draft, true);\n state.finalizing = false;\n return draft;\n }\n\n return shallowCopy(base);\n}\n\nfunction proxyProperty(draft, prop, enumerable) {\n var desc = descriptors[prop];\n\n if (desc) {\n desc.enumerable = enumerable;\n } else {\n descriptors[prop] = desc = {\n configurable: true,\n enumerable: enumerable,\n\n get: function get$1() {\n return get(this[DRAFT_STATE], prop);\n },\n\n set: function set$1(value) {\n set(this[DRAFT_STATE], prop, value);\n }\n\n };\n }\n\n Object.defineProperty(draft, prop, desc);\n}\n\nfunction assertUnrevoked(state) {\n if (state.revoked === true) { throw new Error(\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + JSON.stringify(source(state))); }\n} // This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\n\nfunction markChangesSweep(drafts) {\n // The natural order of drafts in the `scope` array is based on when they\n // were accessed. By processing drafts in reverse natural order, we have a\n // better chance of processing leaf nodes first. When a leaf node is known to\n // have changed, we can avoid any traversal of its ancestor nodes.\n for (var i = drafts.length - 1; i >= 0; i--) {\n var state = drafts[i][DRAFT_STATE];\n\n if (!state.modified) {\n if (Array.isArray(state.base)) {\n if (hasArrayChanges(state)) { markChanged(state); }\n } else if (hasObjectChanges(state)) { markChanged(state); }\n }\n }\n}\n\nfunction markChangesRecursively(object) {\n if (!object || typeof object !== \"object\") { return; }\n var state = object[DRAFT_STATE];\n if (!state) { return; }\n var base = state.base;\n var draft = state.draft;\n var assigned = state.assigned;\n\n if (!Array.isArray(object)) {\n // Look for added keys.\n Object.keys(draft).forEach(function (key) {\n // The `undefined` check is a fast path for pre-existing keys.\n if (base[key] === undefined && !has(base, key)) {\n assigned[key] = true;\n markChanged(state);\n } else if (!assigned[key]) {\n // Only untouched properties trigger recursion.\n markChangesRecursively(draft[key]);\n }\n }); // Look for removed keys.\n\n Object.keys(base).forEach(function (key) {\n // The `undefined` check is a fast path for pre-existing keys.\n if (draft[key] === undefined && !has(draft, key)) {\n assigned[key] = false;\n markChanged(state);\n }\n });\n } else if (hasArrayChanges(state)) {\n markChanged(state);\n assigned.length = true;\n\n if (draft.length < base.length) {\n for (var i = draft.length; i < base.length; i++) { assigned[i] = false; }\n } else {\n for (var i$1 = base.length; i$1 < draft.length; i$1++) { assigned[i$1] = true; }\n }\n\n for (var i$2 = 0; i$2 < draft.length; i$2++) {\n // Only untouched indices trigger recursion.\n if (assigned[i$2] === undefined) { markChangesRecursively(draft[i$2]); }\n }\n }\n}\n\nfunction hasObjectChanges(state) {\n var base = state.base;\n var draft = state.draft; // Search for added keys and changed keys. Start at the back, because\n // non-numeric keys are ordered by time of definition on the object.\n\n var keys = Object.keys(draft);\n\n for (var i = keys.length - 1; i >= 0; i--) {\n var key = keys[i];\n var baseValue = base[key]; // The `undefined` check is a fast path for pre-existing keys.\n\n if (baseValue === undefined && !has(base, key)) {\n return true;\n } // Once a base key is deleted, future changes go undetected, because its\n // descriptor is erased. This branch detects any missed changes.\n else {\n var value = draft[key];\n var state$1 = value && value[DRAFT_STATE];\n\n if (state$1 ? state$1.base !== baseValue : !is(value, baseValue)) {\n return true;\n }\n }\n } // At this point, no keys were added or changed.\n // Compare key count to determine if keys were deleted.\n\n\n return keys.length !== Object.keys(base).length;\n}\n\nfunction hasArrayChanges(state) {\n var draft = state.draft;\n if (draft.length !== state.base.length) { return true; } // See #116\n // If we first shorten the length, our array interceptors will be removed.\n // If after that new items are added, result in the same original length,\n // those last items will have no intercepting property.\n // So if there is no own descriptor on the last position, we know that items were removed and added\n // N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n // the last one\n\n var descriptor = Object.getOwnPropertyDescriptor(draft, draft.length - 1); // descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\n if (descriptor && !descriptor.get) { return true; } // For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\n return false;\n}\n\nfunction createHiddenProperty(target, prop, value) {\n Object.defineProperty(target, prop, {\n value: value,\n enumerable: false,\n writable: true\n });\n}\n\nvar legacyProxy = /*#__PURE__*/Object.freeze({\n willFinalize: willFinalize,\n createProxy: createProxy\n});\n\nfunction willFinalize$1() {}\nfunction createProxy$1(base, parent) {\n var scope = parent ? parent.scope : ImmerScope.current;\n var state = {\n // Track which produce call this is associated with.\n scope: scope,\n // True for both shallow and deep changes.\n modified: false,\n // Used during finalization.\n finalized: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned: {},\n // The parent draft state.\n parent: parent,\n // The base state.\n base: base,\n // The base proxy.\n draft: null,\n // Any property proxies.\n drafts: {},\n // The base copy with any updated values.\n copy: null,\n // Called by the `produce` function.\n revoke: null\n };\n var ref = Array.isArray(base) ? // [state] is used for arrays, to make sure the proxy is array-ish and not violate invariants,\n // although state itself is an object\n Proxy.revocable([state], arrayTraps) : Proxy.revocable(state, objectTraps);\n var revoke = ref.revoke;\n var proxy = ref.proxy;\n state.draft = proxy;\n state.revoke = revoke;\n scope.drafts.push(proxy);\n return proxy;\n}\nvar objectTraps = {\n get: get$1,\n\n has: function has(target, prop) {\n return prop in source$1(target);\n },\n\n ownKeys: function ownKeys(target) {\n return Reflect.ownKeys(source$1(target));\n },\n\n set: set$1,\n deleteProperty: deleteProperty,\n getOwnPropertyDescriptor: getOwnPropertyDescriptor,\n\n defineProperty: function defineProperty() {\n throw new Error(\"Object.defineProperty() cannot be used on an Immer draft\"); // prettier-ignore\n },\n\n getPrototypeOf: function getPrototypeOf(target) {\n return Object.getPrototypeOf(target.base);\n },\n\n setPrototypeOf: function setPrototypeOf() {\n throw new Error(\"Object.setPrototypeOf() cannot be used on an Immer draft\"); // prettier-ignore\n }\n\n};\nvar arrayTraps = {};\neach(objectTraps, function (key, fn) {\n arrayTraps[key] = function () {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\n\narrayTraps.deleteProperty = function (state, prop) {\n if (isNaN(parseInt(prop))) {\n throw new Error(\"Immer only supports deleting array indices\"); // prettier-ignore\n }\n\n return objectTraps.deleteProperty.call(this, state[0], prop);\n};\n\narrayTraps.set = function (state, prop, value) {\n if (prop !== \"length\" && isNaN(parseInt(prop))) {\n throw new Error(\"Immer only supports setting array indices and the 'length' property\"); // prettier-ignore\n }\n\n return objectTraps.set.call(this, state[0], prop, value);\n}; // returns the object we should be reading the current value from, which is base, until some change has been made\n\n\nfunction source$1(state) {\n return state.copy || state.base;\n} // Access a property without creating an Immer draft.\n\n\nfunction peek$1(draft, prop) {\n var state = draft[DRAFT_STATE];\n var desc = Reflect.getOwnPropertyDescriptor(state ? source$1(state) : draft, prop);\n return desc && desc.value;\n}\n\nfunction get$1(state, prop) {\n if (prop === DRAFT_STATE) { return state; }\n var drafts = state.drafts; // Check for existing draft in unmodified state.\n\n if (!state.modified && has(drafts, prop)) {\n return drafts[prop];\n }\n\n var value = source$1(state)[prop];\n\n if (state.finalized || !isDraftable(value)) {\n return value;\n } // Check for existing draft in modified state.\n\n\n if (state.modified) {\n // Assigned values are never drafted. This catches any drafts we created, too.\n if (value !== peek$1(state.base, prop)) { return value; } // Store drafts on the copy (when one exists).\n\n drafts = state.copy;\n }\n\n return drafts[prop] = createProxy$1(value, state);\n}\n\nfunction set$1(state, prop, value) {\n if (!state.modified) {\n var baseValue = peek$1(state.base, prop); // Optimize based on value's truthiness. Truthy values are guaranteed to\n // never be undefined, so we can avoid the `in` operator. Lastly, truthy\n // values may be drafts, but falsy values are never drafts.\n\n var isUnchanged = value ? is(baseValue, value) || value === state.drafts[prop] : is(baseValue, value) && prop in state.base;\n if (isUnchanged) { return true; }\n markChanged$1(state);\n }\n\n state.assigned[prop] = true;\n state.copy[prop] = value;\n return true;\n}\n\nfunction deleteProperty(state, prop) {\n // The `undefined` check is a fast path for pre-existing keys.\n if (peek$1(state.base, prop) !== undefined || prop in state.base) {\n state.assigned[prop] = false;\n markChanged$1(state);\n }\n\n if (state.copy) { delete state.copy[prop]; }\n return true;\n} // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n// the same guarantee in ES5 mode.\n\n\nfunction getOwnPropertyDescriptor(state, prop) {\n var owner = source$1(state);\n var desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n\n if (desc) {\n desc.writable = true;\n desc.configurable = !Array.isArray(owner) || prop !== \"length\";\n }\n\n return desc;\n}\n\nfunction markChanged$1(state) {\n if (!state.modified) {\n state.modified = true;\n state.copy = assign(shallowCopy(state.base), state.drafts);\n state.drafts = null;\n if (state.parent) { markChanged$1(state.parent); }\n }\n}\n\nvar modernProxy = /*#__PURE__*/Object.freeze({\n willFinalize: willFinalize$1,\n createProxy: createProxy$1\n});\n\nfunction generatePatches(state, basePath, patches, inversePatches) {\n Array.isArray(state.base) ? generateArrayPatches(state, basePath, patches, inversePatches) : generateObjectPatches(state, basePath, patches, inversePatches);\n}\n\nfunction generateArrayPatches(state, basePath, patches, inversePatches) {\n var assign, assign$1;\n\n var base = state.base;\n var copy = state.copy;\n var assigned = state.assigned; // Reduce complexity by ensuring `base` is never longer.\n\n if (copy.length < base.length) {\n (assign = [copy, base], base = assign[0], copy = assign[1]);\n (assign$1 = [inversePatches, patches], patches = assign$1[0], inversePatches = assign$1[1]);\n }\n\n var delta = copy.length - base.length; // Find the first replaced index.\n\n var start = 0;\n\n while (base[start] === copy[start] && start < base.length) {\n ++start;\n } // Find the last replaced index. Search from the end to optimize splice patches.\n\n\n var end = base.length;\n\n while (end > start && base[end - 1] === copy[end + delta - 1]) {\n --end;\n } // Process replaced indices.\n\n\n for (var i = start; i < end; ++i) {\n if (assigned[i] && copy[i] !== base[i]) {\n var path = basePath.concat([i]);\n patches.push({\n op: \"replace\",\n path: path,\n value: copy[i]\n });\n inversePatches.push({\n op: \"replace\",\n path: path,\n value: base[i]\n });\n }\n }\n\n var useRemove = end != base.length;\n var replaceCount = patches.length; // Process added indices.\n\n for (var i$1 = end + delta - 1; i$1 >= end; --i$1) {\n var path$1 = basePath.concat([i$1]);\n patches[replaceCount + i$1 - end] = {\n op: \"add\",\n path: path$1,\n value: copy[i$1]\n };\n\n if (useRemove) {\n inversePatches.push({\n op: \"remove\",\n path: path$1\n });\n }\n } // One \"replace\" patch reverses all non-splicing \"add\" patches.\n\n\n if (!useRemove) {\n inversePatches.push({\n op: \"replace\",\n path: basePath.concat([\"length\"]),\n value: base.length\n });\n }\n}\n\nfunction generateObjectPatches(state, basePath, patches, inversePatches) {\n var base = state.base;\n var copy = state.copy;\n each(state.assigned, function (key, assignedValue) {\n var origValue = base[key];\n var value = copy[key];\n var op = !assignedValue ? \"remove\" : key in base ? \"replace\" : \"add\";\n if (origValue === value && op === \"replace\") { return; }\n var path = basePath.concat(key);\n patches.push(op === \"remove\" ? {\n op: op,\n path: path\n } : {\n op: op,\n path: path,\n value: value\n });\n inversePatches.push(op === \"add\" ? {\n op: \"remove\",\n path: path\n } : op === \"remove\" ? {\n op: \"add\",\n path: path,\n value: origValue\n } : {\n op: \"replace\",\n path: path,\n value: origValue\n });\n });\n}\n\nfunction applyPatches(draft, patches) {\n for (var i = 0; i < patches.length; i++) {\n var patch = patches[i];\n var path = patch.path;\n\n if (path.length === 0 && patch.op === \"replace\") {\n draft = patch.value;\n } else {\n var base = draft;\n\n for (var i$1 = 0; i$1 < path.length - 1; i$1++) {\n base = base[path[i$1]];\n if (!base || typeof base !== \"object\") { throw new Error(\"Cannot apply patch, path doesn't resolve: \" + path.join(\"/\")); } // prettier-ignore\n }\n\n var key = path[path.length - 1];\n\n switch (patch.op) {\n case \"replace\":\n base[key] = patch.value;\n break;\n\n case \"add\":\n if (Array.isArray(base)) {\n // TODO: support \"foo/-\" paths for appending to an array\n base.splice(key, 0, patch.value);\n } else {\n base[key] = patch.value;\n }\n\n break;\n\n case \"remove\":\n if (Array.isArray(base)) {\n base.splice(key, 1);\n } else {\n delete base[key];\n }\n\n break;\n\n default:\n throw new Error(\"Unsupported patch operation: \" + patch.op);\n }\n }\n }\n\n return draft;\n}\n\nfunction verifyMinified() {}\n\nvar configDefaults = {\n useProxies: typeof Proxy !== \"undefined\" && typeof Reflect !== \"undefined\",\n autoFreeze: typeof process !== \"undefined\" ? process.env.NODE_ENV !== \"production\" : verifyMinified.name === \"verifyMinified\",\n onAssign: null,\n onDelete: null,\n onCopy: null\n};\nvar Immer = function Immer(config) {\n assign(this, configDefaults, config);\n this.setUseProxies(this.useProxies);\n this.produce = this.produce.bind(this);\n};\n\nImmer.prototype.produce = function produce (base, recipe, patchListener) {\n var this$1 = this;\n\n // curried invocation\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n var defaultBase = recipe;\n recipe = base;\n var self = this;\n return function curriedProduce(base) {\n var this$1 = this;\n if ( base === void 0 ) base = defaultBase;\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n return self.produce(base, function (draft) { return recipe.call.apply(recipe, [ this$1, draft ].concat( args )); }); // prettier-ignore\n };\n } // prettier-ignore\n\n\n {\n if (typeof recipe !== \"function\") {\n throw new Error(\"The first or second argument to `produce` must be a function\");\n }\n\n if (patchListener !== undefined && typeof patchListener !== \"function\") {\n throw new Error(\"The third argument to `produce` must be a function or undefined\");\n }\n }\n var result; // Only plain objects, arrays, and \"immerable classes\" are drafted.\n\n if (isDraftable(base)) {\n var scope = ImmerScope.enter();\n var proxy = this.createProxy(base);\n var hasError = true;\n\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n // finally instead of catch + rethrow better preserves original stack\n if (hasError) { scope.revoke(); }else { scope.leave(); }\n }\n\n if (result instanceof Promise) {\n return result.then(function (result) {\n scope.usePatches(patchListener);\n return this$1.processResult(result, scope);\n }, function (error) {\n scope.revoke();\n throw error;\n });\n }\n\n scope.usePatches(patchListener);\n return this.processResult(result, scope);\n } else {\n result = recipe(base);\n if (result === undefined) { return base; }\n return result !== NOTHING ? result : undefined;\n }\n};\n\nImmer.prototype.createDraft = function createDraft (base) {\n if (!isDraftable(base)) {\n throw new Error(\"First argument to `createDraft` must be a plain object, an array, or an immerable object\"); // prettier-ignore\n }\n\n var scope = ImmerScope.enter();\n var proxy = this.createProxy(base);\n proxy[DRAFT_STATE].isManual = true;\n scope.leave();\n return proxy;\n};\n\nImmer.prototype.finishDraft = function finishDraft (draft, patchListener) {\n var state = draft && draft[DRAFT_STATE];\n\n if (!state || !state.isManual) {\n throw new Error(\"First argument to `finishDraft` must be a draft returned by `createDraft`\"); // prettier-ignore\n }\n\n if (state.finalized) {\n throw new Error(\"The given draft is already finalized\"); // prettier-ignore\n }\n\n var scope = state.scope;\n scope.usePatches(patchListener);\n return this.processResult(undefined, scope);\n};\n\nImmer.prototype.setAutoFreeze = function setAutoFreeze (value) {\n this.autoFreeze = value;\n};\n\nImmer.prototype.setUseProxies = function setUseProxies (value) {\n this.useProxies = value;\n assign(this, value ? modernProxy : legacyProxy);\n};\n\nImmer.prototype.applyPatches = function applyPatches$1 (base, patches) {\n // Mutate the base state when a draft is passed.\n if (isDraft(base)) {\n return applyPatches(base, patches);\n } // Otherwise, produce a copy of the base state.\n\n\n return this.produce(base, function (draft) { return applyPatches(draft, patches); });\n};\n/** @internal */\n\n\nImmer.prototype.processResult = function processResult (result, scope) {\n var baseDraft = scope.drafts[0];\n var isReplaced = result !== undefined && result !== baseDraft;\n this.willFinalize(scope, result, isReplaced);\n\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified) {\n scope.revoke();\n throw new Error(\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\"); // prettier-ignore\n }\n\n if (isDraftable(result)) {\n // Finalize the result in case it contains (or is) a subset of the draft.\n result = this.finalize(result, null, scope);\n }\n\n if (scope.patches) {\n scope.patches.push({\n op: \"replace\",\n path: [],\n value: result\n });\n scope.inversePatches.push({\n op: \"replace\",\n path: [],\n value: baseDraft[DRAFT_STATE].base\n });\n }\n } else {\n // Finalize the base draft.\n result = this.finalize(baseDraft, [], scope);\n }\n\n scope.revoke();\n\n if (scope.patches) {\n scope.patchListener(scope.patches, scope.inversePatches);\n }\n\n return result !== NOTHING ? result : undefined;\n};\n/**\n * @internal\n * Finalize a draft, returning either the unmodified base state or a modified\n * copy of the base state.\n */\n\n\nImmer.prototype.finalize = function finalize (draft, path, scope) {\n var this$1 = this;\n\n var state = draft[DRAFT_STATE];\n\n if (!state) {\n if (Object.isFrozen(draft)) { return draft; }\n return this.finalizeTree(draft, null, scope);\n } // Never finalize drafts owned by another scope.\n\n\n if (state.scope !== scope) {\n return draft;\n }\n\n if (!state.modified) {\n return state.base;\n }\n\n if (!state.finalized) {\n state.finalized = true;\n this.finalizeTree(state.draft, path, scope);\n\n if (this.onDelete) {\n // The `assigned` object is unreliable with ES5 drafts.\n if (this.useProxies) {\n var assigned = state.assigned;\n\n for (var prop in assigned) {\n if (!assigned[prop]) { this.onDelete(state, prop); }\n }\n } else {\n var base = state.base;\n var copy = state.copy;\n each(base, function (prop) {\n if (!has(copy, prop)) { this$1.onDelete(state, prop); }\n });\n }\n }\n\n if (this.onCopy) {\n this.onCopy(state);\n } // At this point, all descendants of `state.copy` have been finalized,\n // so we can be sure that `scope.canAutoFreeze` is accurate.\n\n\n if (this.autoFreeze && scope.canAutoFreeze) {\n Object.freeze(state.copy);\n }\n\n if (path && scope.patches) {\n generatePatches(state, path, scope.patches, scope.inversePatches);\n }\n }\n\n return state.copy;\n};\n/**\n * @internal\n * Finalize all drafts in the given state tree.\n */\n\n\nImmer.prototype.finalizeTree = function finalizeTree (root, rootPath, scope) {\n var this$1 = this;\n\n var state = root[DRAFT_STATE];\n\n if (state) {\n if (!this.useProxies) {\n // Create the final copy, with added keys and without deleted keys.\n state.copy = shallowCopy(state.draft, true);\n }\n\n root = state.copy;\n }\n\n var needPatches = !!rootPath && !!scope.patches;\n\n var finalizeProperty = function (prop, value, parent) {\n if (value === parent) {\n throw Error(\"Immer forbids circular references\");\n } // In the `finalizeTree` method, only the `root` object may be a draft.\n\n\n var isDraftProp = !!state && parent === root;\n\n if (isDraft(value)) {\n var path = isDraftProp && needPatches && !state.assigned[prop] ? rootPath.concat(prop) : null; // Drafts owned by `scope` are finalized here.\n\n value = this$1.finalize(value, path, scope); // Drafts from another scope must prevent auto-freezing.\n\n if (isDraft(value)) {\n scope.canAutoFreeze = false;\n } // Preserve non-enumerable properties.\n\n\n if (Array.isArray(parent) || isEnumerable(parent, prop)) {\n parent[prop] = value;\n } else {\n Object.defineProperty(parent, prop, {\n value: value\n });\n } // Unchanged drafts are never passed to the `onAssign` hook.\n\n\n if (isDraftProp && value === state.base[prop]) { return; }\n } // Unchanged draft properties are ignored.\n else if (isDraftProp && is(value, state.base[prop])) {\n return;\n } // Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n else if (isDraftable(value) && !Object.isFrozen(value)) {\n each(value, finalizeProperty);\n }\n\n if (isDraftProp && this$1.onAssign) {\n this$1.onAssign(state, prop, value);\n }\n };\n\n each(root, finalizeProperty);\n return root;\n};\n\nvar immer = new Immer();\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n\nvar produce = immer.produce;\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is disabled in production.\n */\n\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\n\nvar setUseProxies = immer.setUseProxies.bind(immer);\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\n\nvar applyPatches$1 = immer.applyPatches.bind(immer);\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\n\nvar createDraft = immer.createDraft.bind(immer);\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\n\nvar finishDraft = immer.finishDraft.bind(immer);\n\nexport default produce;\nexport { Immer, applyPatches$1 as applyPatches, createDraft, finishDraft, DRAFTABLE as immerable, isDraft, isDraftable, NOTHING as nothing, original, produce, setAutoFreeze, setUseProxies };\n//# sourceMappingURL=immer.module.js.map\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","function Similar() {\n\tthis.list = [];\n\tthis.lastItem = undefined;\n\tthis.size = 0;\n\n\treturn this;\n}\n\nSimilar.prototype.get = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn this.lastItem.val;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn this.list[index].val;\n\t}\n\n\treturn undefined;\n};\n\nSimilar.prototype.set = function(key, val) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem.val = val;\n\t\treturn this;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\tthis.list[index].val = val;\n\t\treturn this;\n\t}\n\n\tthis.lastItem = { key: key, val: val };\n\tthis.list.push(this.lastItem);\n\tthis.size++;\n\n\treturn this;\n};\n\nSimilar.prototype.delete = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem = undefined;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.size--;\n\t\treturn this.list.splice(index, 1)[0];\n\t}\n\n\treturn undefined;\n};\n\n\n// important that has() doesn't use get() in case an existing key has a falsy value, in which case has() would return false\nSimilar.prototype.has = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn true;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nSimilar.prototype.forEach = function(callback, thisArg) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tcallback.call(thisArg || this, this.list[i].val, this.list[i].key, this);\n\t}\n};\n\nSimilar.prototype.indexOf = function(key) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tif (this.isEqual(this.list[i].key, key)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nSimilar.prototype.isEqual = function(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n};\n\nmodule.exports = Similar;","module.exports = function(forceSimilar) {\n\tif (typeof Map !== 'function' || forceSimilar) {\n\t\tvar Similar = require('./similar');\n\t\treturn new Similar();\n\t}\n\telse {\n\t\treturn new Map();\n\t}\n}\n","var MapOrSimilar = require('map-or-similar');\n\nmodule.exports = function (limit) {\n\tvar cache = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true'),\n\t\tlru = [];\n\n\treturn function (fn) {\n\t\tvar memoizerific = function () {\n\t\t\tvar currentCache = cache,\n\t\t\t\tnewMap,\n\t\t\t\tfnResult,\n\t\t\t\targsLengthMinusOne = arguments.length - 1,\n\t\t\t\tlruPath = Array(argsLengthMinusOne + 1),\n\t\t\t\tisMemoized = true,\n\t\t\t\ti;\n\n\t\t\tif ((memoizerific.numArgs || memoizerific.numArgs === 0) && memoizerific.numArgs !== argsLengthMinusOne + 1) {\n\t\t\t\tthrow new Error('Memoizerific functions should always be called with the same number of arguments');\n\t\t\t}\n\n\t\t\t// loop through each argument to traverse the map tree\n\t\t\tfor (i = 0; i < argsLengthMinusOne; i++) {\n\t\t\t\tlruPath[i] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[i]\n\t\t\t\t};\n\n\t\t\t\t// climb through the hierarchical map tree until the second-last argument has been found, or an argument is missing.\n\t\t\t\t// if all arguments up to the second-last have been found, this will potentially be a cache hit (determined later)\n\t\t\t\tif (currentCache.has(arguments[i])) {\n\t\t\t\t\tcurrentCache = currentCache.get(arguments[i]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tisMemoized = false;\n\n\t\t\t\t// make maps until last value\n\t\t\t\tnewMap = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true');\n\t\t\t\tcurrentCache.set(arguments[i], newMap);\n\t\t\t\tcurrentCache = newMap;\n\t\t\t}\n\n\t\t\t// we are at the last arg, check if it is really memoized\n\t\t\tif (isMemoized) {\n\t\t\t\tif (currentCache.has(arguments[argsLengthMinusOne])) {\n\t\t\t\t\tfnResult = currentCache.get(arguments[argsLengthMinusOne]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tisMemoized = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the result wasn't memoized, compute it and cache it\n\t\t\tif (!isMemoized) {\n\t\t\t\tfnResult = fn.apply(null, arguments);\n\t\t\t\tcurrentCache.set(arguments[argsLengthMinusOne], fnResult);\n\t\t\t}\n\n\t\t\t// if there is a cache limit, purge any extra results\n\t\t\tif (limit > 0) {\n\t\t\t\tlruPath[argsLengthMinusOne] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[argsLengthMinusOne]\n\t\t\t\t};\n\n\t\t\t\tif (isMemoized) {\n\t\t\t\t\tmoveToMostRecentLru(lru, lruPath);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlru.push(lruPath);\n\t\t\t\t}\n\n\t\t\t\tif (lru.length > limit) {\n\t\t\t\t\tremoveCachedResult(lru.shift());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmemoizerific.wasMemoized = isMemoized;\n\t\t\tmemoizerific.numArgs = argsLengthMinusOne + 1;\n\n\t\t\treturn fnResult;\n\t\t};\n\n\t\tmemoizerific.limit = limit;\n\t\tmemoizerific.wasMemoized = false;\n\t\tmemoizerific.cache = cache;\n\t\tmemoizerific.lru = lru;\n\n\t\treturn memoizerific;\n\t};\n};\n\n// move current args to most recent position\nfunction moveToMostRecentLru(lru, lruPath) {\n\tvar lruLen = lru.length,\n\t\tlruPathLen = lruPath.length,\n\t\tisMatch,\n\t\ti, ii;\n\n\tfor (i = 0; i < lruLen; i++) {\n\t\tisMatch = true;\n\t\tfor (ii = 0; ii < lruPathLen; ii++) {\n\t\t\tif (!isEqual(lru[i][ii].arg, lruPath[ii].arg)) {\n\t\t\t\tisMatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (isMatch) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlru.push(lru.splice(i, 1)[0]);\n}\n\n// remove least recently used cache item and all dead branches\nfunction removeCachedResult(removedLru) {\n\tvar removedLruLen = removedLru.length,\n\t\tcurrentLru = removedLru[removedLruLen - 1],\n\t\ttmp,\n\t\ti;\n\n\tcurrentLru.cacheItem.delete(currentLru.arg);\n\n\t// walk down the tree removing dead branches (size 0) along the way\n\tfor (i = removedLruLen - 2; i >= 0; i--) {\n\t\tcurrentLru = removedLru[i];\n\t\ttmp = currentLru.cacheItem.get(currentLru.arg);\n\n\t\tif (!tmp || !tmp.size) {\n\t\t\tcurrentLru.cacheItem.delete(currentLru.arg);\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nfunction isEqual(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n}","import { isDraft, finishDraft, createDraft, setAutoFreeze } from 'immer-peasy';\nimport React, { createContext, useContext, useRef, useReducer, useLayoutEffect, useEffect, useMemo, useState } from 'react';\nimport { compose, createStore as createStore$1, applyMiddleware } from 'redux';\nimport reduxThunk from 'redux-thunk';\nimport memoizerific from 'memoizerific';\n\nvar StoreContext = createContext();\n\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction createStoreStateHook(Context) {\n return function useStoreState(mapState) {\n var store = useContext(Context);\n var mapStateRef = useRef(mapState);\n var stateRef = useRef();\n var mountedRef = useRef(true);\n var subscriptionMapStateError = useRef();\n\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n if (subscriptionMapStateError.current || mapStateRef.current !== mapState || stateRef.current === undefined) {\n try {\n stateRef.current = mapState(store.getState());\n } catch (err) {\n var errorMessage = \"An error occurred trying to map state in a useStoreState hook: \" + err.message + \".\";\n\n if (subscriptionMapStateError.current) {\n errorMessage += \"\\nThis error may be related to the following error:\\n\" + subscriptionMapStateError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n }\n\n useIsomorphicLayoutEffect(function () {\n mapStateRef.current = mapState;\n subscriptionMapStateError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n var checkMapState = function checkMapState() {\n try {\n var newState = mapStateRef.current(store.getState());\n\n if (newState === stateRef.current) {\n return;\n }\n\n stateRef.current = newState;\n } catch (err) {\n // see https://github.com/reduxjs/react-redux/issues/1179\n // There is a possibility mapState will fail due to stale state or\n // props, therefore we will just track the error and force our\n // component to update. It should then receive the updated state\n subscriptionMapStateError.current = err;\n }\n\n if (mountedRef.current) {\n forceRender({});\n }\n };\n\n var unsubscribe = store.subscribe(checkMapState);\n checkMapState();\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, []);\n return stateRef.current;\n };\n}\nvar useStoreState = createStoreStateHook(StoreContext);\nfunction createStoreActionsHook(Context) {\n return function useStoreActions(mapActions) {\n var store = useContext(Context);\n return mapActions(store.getActions());\n };\n}\nvar useStoreActions = createStoreActionsHook(StoreContext);\nfunction createStoreDispatchHook(Context) {\n return function useStoreDispatch() {\n var store = useContext(Context);\n return store.dispatch;\n };\n}\nvar useStoreDispatch = createStoreDispatchHook(StoreContext);\nfunction useStore() {\n return useContext(StoreContext);\n}\nfunction createTypedHooks() {\n return {\n useStoreActions: useStoreActions,\n useStoreDispatch: useStoreDispatch,\n useStoreState: useStoreState,\n useStore: useStore\n };\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar actionSymbol = '🙈action🙈';\nvar actionOnSymbol = '🙈actionOn🙈';\nvar computedSymbol = '🙈computedSymbol🙈';\nvar reducerSymbol = '🙈reducer🙈';\nvar thunkOnSymbol = '🙈thunkOn🙈';\nvar thunkSymbol = '🙈thunk🙈';\n\nvar debug = function debug(state) {\n if (isDraft(state)) {\n return finishDraft(createDraft(state));\n }\n\n return state;\n};\nvar memo = function memo(fn, cacheSize) {\n return memoizerific(cacheSize)(fn);\n};\nvar actionOn = function actionOn(targetResolver, fn) {\n fn[actionOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar action = function action(fn) {\n fn[actionSymbol] = {};\n return fn;\n};\nvar defaultStateResolvers = [function (state) {\n return state;\n}];\nvar computed = function computed(fnOrStateResolvers, fn) {\n if (typeof fn === 'function') {\n fn[computedSymbol] = {\n stateResolvers: fnOrStateResolvers\n };\n return fn;\n }\n\n fnOrStateResolvers[computedSymbol] = {\n stateResolvers: defaultStateResolvers\n };\n return fnOrStateResolvers;\n};\nvar thunkOn = function thunkOn(targetResolver, fn) {\n fn[thunkOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar thunk = function thunk(fn) {\n fn[thunkSymbol] = {};\n return fn;\n};\nvar reducer = function reducer(fn) {\n fn[reducerSymbol] = {};\n return fn;\n};\n\nvar isStateObject = function isStateObject(x) {\n return x !== null && typeof x === 'object' && !Array.isArray(x) && x.constructor === Object;\n};\nvar get = function get(path, target) {\n return path.reduce(function (acc, cur) {\n return isStateObject(acc) ? acc[cur] : undefined;\n }, target);\n};\nvar set = function set(path, target, value) {\n path.reduce(function (acc, cur, idx) {\n if (idx + 1 === path.length) {\n acc[cur] = value;\n } else {\n acc[cur] = acc[cur] || {};\n }\n\n return acc[cur];\n }, target);\n};\n\nvar newify = function newify(currentPath, currentState, finalValue) {\n if (currentPath.length === 0) {\n return finalValue;\n }\n\n var newState = _extends({}, currentState);\n\n var key = currentPath[0];\n\n if (currentPath.length === 1) {\n newState[key] = finalValue;\n } else {\n newState[key] = newify(currentPath.slice(1), newState[key], finalValue);\n }\n\n return newState;\n};\n\nfunction createStoreInternals(_ref) {\n var disableImmer = _ref.disableImmer,\n initialState = _ref.initialState,\n injections = _ref.injections,\n model = _ref.model,\n reducerEnhancer = _ref.reducerEnhancer,\n references = _ref.references;\n\n function simpleProduce(path, state, fn) {\n if (disableImmer) {\n var _current = get(path, state);\n\n var next = fn(_current);\n\n if (_current !== next) {\n return newify(path, state, next);\n }\n\n return state;\n }\n\n var draft = createDraft(state);\n\n var current = get(path, draft);\n\n fn(current);\n return finishDraft(draft);\n }\n\n var defaultState = initialState;\n var actionCreatorDict = {};\n var actionCreators = {};\n var actionReducersDict = {};\n var actionThunks = {};\n var computedProperties = [];\n var customReducers = [];\n var listenerActionCreators = {};\n var listenerActionMap = {};\n var listenerDefinitions = [];\n var computedState = {\n isInReducer: false,\n currentState: defaultState\n };\n\n var recursiveExtractDefsFromModel = function recursiveExtractDefsFromModel(current, parentPath) {\n return Object.keys(current).forEach(function (key) {\n var value = current[key];\n var path = [].concat(parentPath, [key]);\n var meta = {\n parent: parentPath,\n path: path\n };\n\n var handleValueAsState = function handleValueAsState() {\n var initialParentRef = get(parentPath, initialState);\n\n if (initialParentRef && key in initialParentRef) {\n set(path, defaultState, initialParentRef[key]);\n } else {\n set(path, defaultState, value);\n }\n };\n\n if (typeof value === 'function') {\n if (value[actionSymbol] || value[actionOnSymbol]) {\n var prefix = value[actionSymbol] ? '@action' : '@actionOn';\n var type = prefix + \".\" + path.join('.');\n var actionMeta = value[actionSymbol] || value[actionOnSymbol];\n actionMeta.actionName = key;\n actionMeta.type = type;\n actionMeta.parent = meta.parent;\n actionMeta.path = meta.path; // Action Reducer\n\n actionReducersDict[type] = value; // Action Creator\n\n var actionCreator = function actionCreator(payload) {\n var actionDefinition = {\n type: type,\n payload: payload\n };\n\n if (value[actionOnSymbol] && actionMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(actionMeta.resolvedTargets);\n }\n\n var result = references.dispatch(actionDefinition);\n return result;\n };\n\n actionCreator.type = type;\n actionCreatorDict[type] = actionCreator;\n\n if (key !== 'easyPeasyReplaceState') {\n if (value[actionOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, actionCreator);\n } else {\n set(path, actionCreators, actionCreator);\n }\n }\n } else if (value[thunkSymbol] || value[thunkOnSymbol]) {\n var _prefix = value[thunkSymbol] ? '@thunk' : '@thunkOn';\n\n var _type = _prefix + \".\" + path.join('.');\n\n var thunkMeta = value[thunkSymbol] || value[thunkOnSymbol];\n thunkMeta.actionName = key;\n thunkMeta.type = _type;\n thunkMeta.parent = meta.parent;\n thunkMeta.path = meta.path; // Thunk Action\n\n var thunkHandler = function thunkHandler(payload) {\n var helpers = {\n dispatch: references.dispatch,\n getState: function getState() {\n return get(parentPath, references.getState());\n },\n getStoreActions: function getStoreActions() {\n return actionCreators;\n },\n getStoreState: references.getState,\n injections: injections,\n meta: meta\n };\n\n if (value[thunkOnSymbol] && thunkMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(thunkMeta.resolvedTargets);\n }\n\n return value(get(parentPath, actionCreators), payload, helpers);\n };\n\n set(path, actionThunks, thunkHandler); // Thunk Action Creator\n\n var startType = _type + \"(start)\";\n var successType = _type + \"(success)\";\n var failType = _type + \"(fail)\";\n\n var _actionCreator = function _actionCreator(payload) {\n var dispatchError = function dispatchError(err) {\n references.dispatch({\n type: failType,\n payload: payload,\n error: err\n });\n references.dispatch({\n type: _type,\n payload: payload,\n error: err\n });\n };\n\n var dispatchSuccess = function dispatchSuccess(result) {\n references.dispatch({\n type: successType,\n payload: payload,\n result: result\n });\n references.dispatch({\n type: _type,\n payload: payload,\n result: result\n });\n };\n\n references.dispatch({\n type: startType,\n payload: payload\n });\n\n try {\n var result = references.dispatch(function () {\n return thunkHandler(payload);\n });\n\n if (typeof result === 'object' && typeof result.then === 'function') {\n return result.then(function (resolved) {\n dispatchSuccess(resolved);\n return resolved;\n }).catch(function (err) {\n dispatchError(err);\n throw err;\n });\n }\n\n dispatchSuccess(result);\n return result;\n } catch (err) {\n dispatchError(err);\n throw err;\n }\n };\n\n _actionCreator.type = _type;\n _actionCreator.startType = startType;\n _actionCreator.successType = successType;\n _actionCreator.failType = failType;\n actionCreatorDict[_type] = _actionCreator;\n\n if (value[thunkOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, _actionCreator);\n } else {\n set(path, actionCreators, _actionCreator);\n }\n } else if (value[computedSymbol]) {\n var parent = get(parentPath, defaultState);\n\n var computedMeta = value[computedSymbol];\n var memoisedResultFn = memoizerific(1)(value);\n\n var createComputedProperty = function createComputedProperty(o) {\n Object.defineProperty(o, key, {\n configurable: true,\n enumerable: true,\n get: function get$1() {\n var storeState;\n\n if (computedState.isInReducer) {\n storeState = computedState.currentState;\n } else if (references.getState == null) {\n return undefined;\n } else {\n try {\n storeState = references.getState();\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Invalid access attempt to a computed property');\n }\n\n return undefined;\n }\n }\n\n var state = get(parentPath, storeState);\n\n var inputs = computedMeta.stateResolvers.map(function (resolver) {\n return resolver(state, storeState);\n });\n return memoisedResultFn.apply(void 0, inputs);\n }\n });\n };\n\n createComputedProperty(parent);\n computedProperties.push({\n key: key,\n parentPath: parentPath,\n createComputedProperty: createComputedProperty\n });\n } else if (value[reducerSymbol]) {\n customReducers.push({\n key: key,\n parentPath: parentPath,\n reducer: value\n });\n } else {\n handleValueAsState();\n }\n } else if (isStateObject(value)) {\n var existing = get(path, defaultState);\n\n if (existing == null) {\n set(path, defaultState, {});\n }\n\n recursiveExtractDefsFromModel(value, path);\n } else {\n handleValueAsState();\n }\n });\n };\n\n recursiveExtractDefsFromModel(model, []);\n listenerDefinitions.forEach(function (listenerActionOrThunk) {\n var listenerMeta = listenerActionOrThunk[actionOnSymbol] || listenerActionOrThunk[thunkOnSymbol];\n var targets = listenerMeta.targetResolver(get(listenerMeta.parent, actionCreators), actionCreators);\n var targetTypes = (Array.isArray(targets) ? targets : [targets]).reduce(function (acc, target) {\n if (typeof target === 'function' && target.type && actionCreatorDict[target.type]) {\n acc.push(target.type);\n } else if (typeof target === 'string') {\n acc.push(target);\n }\n\n return acc;\n }, []);\n listenerMeta.resolvedTargets = targetTypes;\n targetTypes.forEach(function (targetType) {\n var listenerReg = listenerActionMap[targetType] || [];\n listenerReg.push(actionCreatorDict[listenerMeta.type]);\n listenerActionMap[targetType] = listenerReg;\n });\n });\n\n var createReducer = function createReducer() {\n var runActionReducerAtPath = function runActionReducerAtPath(state, action, actionReducer, path) {\n return simpleProduce(path, state, function (draft) {\n return actionReducer(draft, action.payload);\n });\n };\n\n var reducerForActions = function reducerForActions(state, action) {\n var actionReducer = actionReducersDict[action.type];\n\n if (actionReducer) {\n var actionMeta = actionReducer[actionSymbol] || actionReducer[actionOnSymbol];\n return runActionReducerAtPath(state, action, actionReducer, actionMeta.parent);\n }\n\n return state;\n };\n\n var reducerForCustomReducers = function reducerForCustomReducers(state, action) {\n return customReducers.reduce(function (acc, _ref2) {\n var parentPath = _ref2.parentPath,\n key = _ref2.key,\n red = _ref2.reducer;\n return simpleProduce(parentPath, acc, function (draft) {\n draft[key] = red(draft[key], action);\n return draft;\n });\n }, state);\n };\n\n var rootReducer = function rootReducer(state, action) {\n var stateAfterActions = reducerForActions(state, action);\n var next = customReducers.length > 0 ? reducerForCustomReducers(stateAfterActions, action) : stateAfterActions;\n\n if (state !== next) {\n computedProperties.forEach(function (_ref3) {\n var parentPath = _ref3.parentPath,\n createComputedProperty = _ref3.createComputedProperty;\n createComputedProperty(get(parentPath, next));\n });\n }\n\n return next;\n };\n\n return rootReducer;\n };\n\n return {\n actionCreatorDict: actionCreatorDict,\n actionCreators: actionCreators,\n computedProperties: computedProperties,\n computedState: computedState,\n defaultState: defaultState,\n listenerActionCreators: listenerActionCreators,\n listenerActionMap: listenerActionMap,\n reducer: reducerEnhancer(createReducer())\n };\n}\n\nfunction createStore(model, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n compose$1 = _options.compose,\n _options$devTools = _options.devTools,\n devTools = _options$devTools === void 0 ? true : _options$devTools,\n _options$disableImmer = _options.disableImmer,\n disableImmer = _options$disableImmer === void 0 ? false : _options$disableImmer,\n _options$enhancers = _options.enhancers,\n enhancers = _options$enhancers === void 0 ? [] : _options$enhancers,\n _options$initialState = _options.initialState,\n initialState = _options$initialState === void 0 ? {} : _options$initialState,\n injections = _options.injections,\n _options$middleware = _options.middleware,\n middleware = _options$middleware === void 0 ? [] : _options$middleware,\n _options$mockActions = _options.mockActions,\n mockActions = _options$mockActions === void 0 ? false : _options$mockActions,\n _options$name = _options.name,\n storeName = _options$name === void 0 ? \"EasyPeasyStore\" : _options$name,\n _options$reducerEnhan = _options.reducerEnhancer,\n reducerEnhancer = _options$reducerEnhan === void 0 ? function (rootReducer) {\n return rootReducer;\n } : _options$reducerEnhan;\n\n var bindReplaceState = function bindReplaceState(modelDef) {\n return _extends({}, modelDef, {\n easyPeasyReplaceState: action(function (state, payload) {\n return payload;\n })\n });\n };\n\n var modelDefinition = bindReplaceState(model);\n var mockedActions = [];\n var references = {};\n\n var bindStoreInternals = function bindStoreInternals(state) {\n if (state === void 0) {\n state = {};\n }\n\n references.internals = createStoreInternals({\n disableImmer: disableImmer,\n initialState: state,\n injections: injections,\n model: modelDefinition,\n reducerEnhancer: reducerEnhancer,\n references: references\n });\n };\n\n bindStoreInternals(initialState);\n\n var listenerActionsMiddleware = function listenerActionsMiddleware() {\n return function (next) {\n return function (action) {\n var result = next(action);\n\n if (action && references.internals.listenerActionMap[action.type] && references.internals.listenerActionMap[action.type].length > 0) {\n var sourceAction = references.internals.actionCreatorDict[action.type];\n references.internals.listenerActionMap[action.type].forEach(function (actionCreator) {\n actionCreator({\n type: sourceAction ? sourceAction.type : action.type,\n payload: action.payload,\n error: action.error,\n result: action.result\n });\n });\n }\n\n return result;\n };\n };\n };\n\n var mockActionsMiddleware = function mockActionsMiddleware() {\n return function () {\n return function (action) {\n if (action != null) {\n mockedActions.push(action);\n }\n\n return undefined;\n };\n };\n };\n\n var computedPropertiesMiddleware = function computedPropertiesMiddleware(store) {\n return function (next) {\n return function (action) {\n references.internals.computedState.currentState = store.getState();\n references.internals.computedState.isInReducer = true;\n return next(action);\n };\n };\n };\n\n var easyPeasyMiddleware = [computedPropertiesMiddleware, reduxThunk].concat(middleware, [listenerActionsMiddleware]);\n\n if (mockActions) {\n easyPeasyMiddleware.push(mockActionsMiddleware);\n }\n\n var composeEnhancers = compose$1 || (devTools && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: storeName\n }) : compose);\n var store = createStore$1(references.internals.reducer, references.internals.defaultState, composeEnhancers.apply(void 0, [applyMiddleware.apply(void 0, easyPeasyMiddleware)].concat(enhancers)));\n store.subscribe(function () {\n references.internals.computedState.isInReducer = false;\n });\n references.dispatch = store.dispatch;\n references.getState = store.getState;\n\n var bindActionCreators = function bindActionCreators() {\n Object.keys(store.dispatch).forEach(function (actionsKey) {\n delete store.dispatch[actionsKey];\n });\n Object.keys(references.internals.actionCreators).forEach(function (key) {\n store.dispatch[key] = references.internals.actionCreators[key];\n });\n };\n\n bindActionCreators();\n\n var rebindStore = function rebindStore(removeKey) {\n var currentState = store.getState();\n\n if (removeKey) {\n delete currentState[removeKey];\n }\n\n bindStoreInternals(store.getState());\n store.replaceReducer(references.internals.reducer);\n references.internals.actionCreatorDict['@action.easyPeasyReplaceState'](references.internals.defaultState);\n bindActionCreators();\n };\n\n return Object.assign(store, {\n addModel: function addModel(key, modelForKey) {\n if (modelDefinition[key] && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model already contains a model definition for \\\"\" + key + \"\\\"\");\n store.removeModel(key);\n }\n\n modelDefinition[key] = modelForKey;\n rebindStore();\n },\n clearMockedActions: function clearMockedActions() {\n mockedActions = [];\n },\n getActions: function getActions() {\n return references.internals.actionCreators;\n },\n getListeners: function getListeners() {\n return references.internals.listenerActionCreators;\n },\n getMockedActions: function getMockedActions() {\n return [].concat(mockedActions);\n },\n reconfigure: function reconfigure(newModel) {\n modelDefinition = bindReplaceState(newModel);\n rebindStore();\n },\n removeModel: function removeModel(key) {\n if (!modelDefinition[key]) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model does not contain a model definition for \\\"\" + key + \"\\\"\");\n }\n\n return;\n }\n\n delete modelDefinition[key];\n rebindStore(key);\n }\n });\n}\n\n/* eslint-disable react/prop-types */\nfunction createContextStore(model, config) {\n var StoreContext = createContext();\n\n function Provider(_ref) {\n var children = _ref.children,\n initialData = _ref.initialData;\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n }\n\n function useStore() {\n return useContext(StoreContext);\n }\n\n return {\n Provider: Provider,\n useStore: useStore,\n useStoreState: createStoreStateHook(StoreContext),\n useStoreActions: createStoreActionsHook(StoreContext),\n useStoreDispatch: createStoreDispatchHook(StoreContext)\n };\n}\n\n/**\n * Some good references on the topic of reinitialisation:\n * - https://github.com/facebook/react/issues/14830\n */\n\nfunction createComponentStore(model, config) {\n return function useLocalStore(initialData) {\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n var previousStateRef = useRef(store.getState());\n\n var _useState = useState(function () {\n return store.getState();\n }),\n currentState = _useState[0],\n setCurrentState = _useState[1];\n\n useEffect(function () {\n return store.subscribe(function () {\n var nextState = store.getState();\n\n if (previousStateRef.current !== nextState) {\n previousStateRef.current = nextState;\n setCurrentState(nextState);\n }\n });\n }, [store]);\n return [currentState, store.getActions()];\n };\n}\n\nvar StoreProvider = function StoreProvider(_ref) {\n var children = _ref.children,\n store = _ref.store;\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n};\n\n/**\n * The auto freeze feature of immer doesn't seem to work in our testing. We have\n * explicitly disabled it to avoid perf issues.\n */\n\nsetAutoFreeze(false);\n\nexport { StoreProvider, action, actionOn, computed, createComponentStore, createContextStore, createStore, createTypedHooks, debug, memo, reducer, thunk, thunkOn, useStore, useStoreActions, useStoreDispatch, useStoreState };\n//# sourceMappingURL=easy-peasy.esm.js.map\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {get, set} from \"./schedule\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i(t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr\";\nimport transition_attrTween from \"./attrTween\";\nimport transition_delay from \"./delay\";\nimport transition_duration from \"./duration\";\nimport transition_ease from \"./ease\";\nimport transition_filter from \"./filter\";\nimport transition_merge from \"./merge\";\nimport transition_on from \"./on\";\nimport transition_remove from \"./remove\";\nimport transition_select from \"./select\";\nimport transition_selectAll from \"./selectAll\";\nimport transition_selection from \"./selection\";\nimport transition_style from \"./style\";\nimport transition_styleTween from \"./styleTween\";\nimport transition_text from \"./text\";\nimport transition_transition from \"./transition\";\nimport transition_tween from \"./tween\";\nimport transition_end from \"./end\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i(t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index\";\nimport schedule from \"../transition/schedule\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt\";\nimport selection_transition from \"./transition\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import { action } from 'easy-peasy';\nimport isEqual from 'fast-deep-equal';\n\nimport { getBoundingBox, getNodesInside, getConnectedEdges } from '../utils/graph';\n\nexport default {\n setOnConnect: action((state, onConnect) => {\n state.onConnect = onConnect;\n }),\n\n setNodes: action((state, nodes) => {\n state.nodes = nodes;\n }),\n\n setEdges: action((state, edges) => {\n state.edges = edges;\n }),\n\n updateNodeData: action((state, { id, ...data }) => {\n state.nodes.forEach((n) => {\n if (n.id === id) {\n n.__rg = {\n ...n.__rg,\n ...data\n };\n }\n });\n }),\n\n updateNodePos: action((state, { id, pos }) => {\n state.nodes.forEach((n) => {\n if (n.id === id) {\n n.__rg = {\n ...n.__rg,\n position: pos\n };\n }\n });\n }),\n\n setSelection: action((state, isActive) => {\n state.selectionActive = isActive;\n }),\n\n setNodesSelection: action((state, { isActive, selection }) => {\n if (!isActive) {\n state.nodesSelectionActive = false;\n state.selectedElements = [];\n\n return;\n }\n const selectedNodes = getNodesInside(state.nodes, selection, state.transform);\n const selectedNodesBbox = getBoundingBox(selectedNodes);\n\n state.selection = selection;\n state.nodesSelectionActive = true;\n state.selectedNodesBbox = selectedNodesBbox;\n state.nodesSelectionActive = true;\n }),\n\n setSelectedElements: action((state, elements) => {\n const selectedElementsArr = Array.isArray(elements) ? elements : [elements];\n const selectedElementsUpdated = !isEqual(selectedElementsArr, state.selectedElements);\n const selectedElements = selectedElementsUpdated ? selectedElementsArr : state.selectedElements;\n\n state.selectedElements = selectedElements;\n }),\n\n updateSelection: action((state, selection) => {\n const selectedNodes = getNodesInside(state.nodes, selection, state.transform);\n const selectedEdges = getConnectedEdges(selectedNodes, state.edges);\n\n const nextSelectedElements = [...selectedNodes, ...selectedEdges];\n const selectedElementsUpdated = !isEqual(nextSelectedElements, state.selectedElements);\n\n state.selection = selection;\n state.selectedElements = selectedElementsUpdated ? nextSelectedElements: state.selectedElements\n }),\n\n updateTransform: action((state, transform) => {\n state.transform = [transform.x, transform.y, transform.k];\n }),\n\n updateSize: action((state, size) => {\n state.width = size.width;\n state.height = size.height;\n }),\n\n initD3: action((state, { zoom, selection }) => {\n state.d3Zoom = zoom;\n state.d3Selection = selection;\n state.d3Initialised = true;\n }),\n\n setConnectionPosition: action((state, position) => {\n state.connectionPosition = position;\n }),\n\n setConnectionSourceId: action((state, sourceId) => {\n state.connectionSourceId = sourceId;\n })\n};","import { createStore } from 'easy-peasy';\n\nimport actions from './actions';\n\nconst store = createStore({\n width: 0,\n height: 0,\n transform: [0, 0, 1],\n nodes: [],\n edges: [],\n selectedElements: [],\n selectedNodesBbox: { x: 0, y: 0, width: 0, height: 0 },\n\n d3Zoom: null,\n d3Selection: null,\n d3Initialised: false,\n\n nodesSelectionActive: false,\n selectionActive: false,\n selection: {},\n\n connectionSourceId: null,\n connectionPosition: { x: 0, y: 0 },\n\n onConnect: () => {},\n\n ...actions\n});\n\nexport default store;\n","import { zoomIdentity } from 'd3-zoom';\n\nimport store from '../store';\nimport { isDefined } from './index';\n\nexport const isEdge = element => element.source && element.target;\n\nexport const isNode = element => !element.source && !element.target;\n\nexport const getOutgoers = (node, elements) => {\n if (!isNode(node)) {\n return [];\n }\n\n const outgoerIds = elements.filter(e => e.source === node.id).map(e => e.target);\n return elements.filter(e => outgoerIds.includes(e.id));\n};\n\nexport const removeElements = (elementsToRemove, elements) => {\n const nodeIdsToRemove = elementsToRemove.map(n => n.id);\n\n return elements.filter(e => {\n return (\n !nodeIdsToRemove.includes(e.id) &&\n !nodeIdsToRemove.includes(e.target) &&\n !nodeIdsToRemove.includes(e.source)\n );\n });\n};\n\nfunction getEdgeId(params) {\n return `reactflow__edge-${params.source}-${params.target}`;\n}\n\nexport const addEdge = (edgeParams, elements) => {\n if (!edgeParams.source || !edgeParams.target) {\n throw new Error('Can not create edge. An edge needs a source and a target');\n }\n\n return elements.concat({\n ...edgeParams,\n id: isDefined(edgeParams.id) ? edgeParams.id : getEdgeId(edgeParams)\n });\n}\n\nconst pointToRendererPoint = ({ x, y }, transform) => {\n const rendererX = (x - transform[0]) * (1 / [transform[2]]);\n const rendererY = (y - transform[1]) * (1 / [transform[2]]);\n\n return {\n x: rendererX,\n y: rendererY\n };\n};\n\nexport const parseElement = (e, transform) => {\n if (!e.id) {\n throw new Error('All elements (nodes and edges) need to have an id.',)\n }\n\n if (isEdge(e)) {\n return {\n ...e,\n id: e.id.toString(),\n type: e.type || 'default'\n };\n }\n\n return {\n ...e,\n id: e.id.toString(),\n type: e.type || 'default',\n __rg: {\n position: pointToRendererPoint(e.position, transform),\n width: null,\n height: null,\n handleBounds : {}\n }\n };\n};\n\nexport const getBoundingBox = (nodes) => {\n const bbox = nodes.reduce((res, node) => {\n const { position } = node.__rg;\n const x2 = position.x + node.__rg.width;\n const y2 = position.y + node.__rg.height;\n\n if (position.x < res.minX) {\n res.minX = position.x;\n }\n\n if (x2 > res.maxX) {\n res.maxX = x2;\n }\n\n if (position.y < res.minY) {\n res.minY = position.y;\n }\n\n if (y2 > res.maxY) {\n res.maxY = y2;\n }\n\n return res;\n }, {\n minX: Number.MAX_VALUE,\n minY: Number.MAX_VALUE,\n maxX: 0,\n maxY: 0\n });\n\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY\n };\n};\n\nexport const graphPosToZoomedPos = (pos, transform) => {\n return {\n x: (pos.x * transform[2]) + transform[0],\n y: (pos.y * transform[2]) + transform[1]\n };\n}\n\nexport const getNodesInside = (nodes, bbox, transform = [0, 0, 1], partially = false) => {\n return nodes.\n filter(n => {\n const bboxPos = {\n x: (bbox.x - transform[0]) * (1 / transform[2]),\n y: (bbox.y - transform[1]) * (1 / transform[2])\n };\n const bboxWidth = bbox.width * (1 / transform[2]);\n const bboxHeight = bbox.height * (1 / transform[2]);\n const { position, width, height } = n.__rg;\n const nodeWidth = partially ? -width : width;\n const nodeHeight = partially ? 0 : height;\n const offsetX = partially ? width : 0;\n const offsetY = partially ? height : 0;\n\n return (\n (position.x + offsetX > bboxPos.x && (position.x + nodeWidth) < (bboxPos.x + bboxWidth)) &&\n (position.y + offsetY > bboxPos.y && (position.y + nodeHeight) < (bboxPos.y + bboxHeight))\n );\n });\n};\n\nexport const getConnectedEdges = (nodes, edges) => {\n const nodeIds = nodes.map(n => n.id);\n\n return edges.filter(e => {\n const hasSourceHandleId = e.source.includes('__');\n const hasTargetHandleId = e.target.includes('__');\n\n const sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source;\n const targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target;\n\n return nodeIds.includes(sourceId) || nodeIds.includes(targetId);\n });\n};\n\nexport const fitView = ({ padding = 0 } = {}) => {\n const state = store.getState();\n const bounds = getBoundingBox(state.nodes);\n const maxBoundsSize = Math.max(bounds.width, bounds.height);\n const k = Math.min(state.width, state.height) / (maxBoundsSize + (maxBoundsSize * padding));\n const boundsCenterX = bounds.x + (bounds.width / 2);\n const boundsCenterY = bounds.y + (bounds.height / 2);\n const transform = [(state.width / 2) - (boundsCenterX * k), (state.height / 2) - (boundsCenterY * k)];\n const fittedTransform = zoomIdentity.translate(transform[0], transform[1]).scale(k);\n\n state.d3Selection.call(state.d3Zoom.transform, fittedTransform);\n};\n\nexport const zoomIn = () => {\n const state = store.getState();\n state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] + 0.2);\n};\n\nexport const zoomOut = () => {\n const state = store.getState();\n state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] - 0.2);\n};\n","import React, { useRef, useEffect } from 'react';\nimport { useStoreState } from 'easy-peasy';\nimport classnames from 'classnames';\n\nimport { isFunction } from '../../utils'\nimport { getNodesInside } from '../../utils/graph';\n\nconst baseStyle = {\n position: 'absolute',\n zIndex: 5,\n bottom: 10,\n right: 10,\n width: 200\n};\n\nexport default ({ style = {}, className, bgColor = '#f8f8f8', nodeColor = '#ddd' }) => {\n const canvasNode = useRef(null);\n const state = useStoreState(s => ({\n width: s.width,\n height: s.height,\n nodes: s.nodes,\n transform: s.transform,\n })); const mapClasses = classnames('react-flow__minimap', className);\n const nodePositions = state.nodes.map(n => n.__rg.position);\n const width = style.width || baseStyle.width;\n const height = (state.height / (state.width || 1)) * width;\n const bbox = { x: 0, y: 0, width: state.width, height: state.height };\n const scaleFactor = width / state.width;\n const nodeColorFunc = isFunction(nodeColor) ? nodeColor : () => nodeColor;\n\n useEffect(() => {\n if (canvasNode) {\n const ctx = canvasNode.current.getContext('2d');\n const nodesInside = getNodesInside(state.nodes, bbox, state.transform, true);\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, width, height);\n\n nodesInside.forEach((n) => {\n const pos = n.__rg.position;\n const transformX = state.transform[0];\n const transformY = state.transform[1];\n const x = (pos.x * state.transform[2]) + transformX;\n const y = (pos.y * state.transform[2]) + transformY;\n\n ctx.fillStyle = nodeColorFunc(n);\n\n ctx.fillRect(\n (x * scaleFactor),\n (y * scaleFactor),\n n.__rg.width * scaleFactor * state.transform[2],\n n.__rg.height * scaleFactor * state.transform[2]\n );\n });\n }\n }, [nodePositions, state.transform, height])\n\n return (\n \n );\n}\n","import React from 'react';\nimport classnames from 'classnames';\n\nimport { fitView, zoomIn, zoomOut } from '../../utils/graph';\nimport plusIcon from '../../../assets/icons/plus.svg';\nimport minusIcon from '../../../assets/icons/minus.svg';\nimport fitviewIcon from '../../../assets/icons/fitview.svg';\n\nconst baseStyle = {\n position: 'absolute',\n zIndex: 5,\n bottom: 10,\n left: 10,\n};\n\nexport default ({ style, className }) => {\n const mapClasses = classnames('react-flow__controls', className);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","export const isFunction = obj => !!(obj && obj.constructor && obj.call && obj.apply);\n\nexport const isDefined = obj => typeof obj !== 'undefined';\n\nexport const inInputDOMNode = e => e && e.target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.nodeName);\n\nexport const getDimensions = (node = {}) => ({\n width: node.offsetWidth,\n height: node.offsetHeight\n});\n"],"names":["obj","NOTHING","Symbol","DRAFTABLE","for","DRAFT_STATE","isDraft","value","isDraftable","Array","isArray","proto","Object","getPrototypeOf","prototype","constructor","assign","target","key","has","ownKeys","Reflect","getOwnPropertySymbols","getOwnPropertyNames","concat","shallowCopy","base","invokeGetters","slice","clone","create","forEach","desc","getOwnPropertyDescriptor","get","call","enumerable","defineProperty","writable","configurable","each","cb","i","length","isEnumerable","prop","thing","hasOwnProperty","is","x","y","ImmerScope","parent","this","drafts","canAutoFreeze","patches","revoke","draft","usePatches","patchListener","inversePatches","leave","current","enter","descriptors","createProxy","clonePotentialDraft","state","assertUnrevoked","peek","source","finalizing","prepareCopy","copy","set","assigned","modified","markChanged","proxyProperty","scope","finalized","revoke$1","revoked","push","Error","JSON","stringify","markChangesSweep","hasArrayChanges","hasObjectChanges","keys","baseValue","undefined","state$1","descriptor","legacyProxy","freeze","willFinalize","result","isReplaced","markChangesRecursively","object","i$1","i$2","createProxy$1","ref","Proxy","revocable","arrayTraps","objectTraps","proxy","source$1","peek$1","markChanged$1","deleteProperty","owner","setPrototypeOf","fn","arguments","apply","isNaN","parseInt","modernProxy","generatePatches","basePath","assign$1","delta","start","end","path","op","useRemove","replaceCount","path$1","generateArrayPatches","assignedValue","origValue","generateObjectPatches","applyPatches","patch","join","splice","configDefaults","useProxies","autoFreeze","process","env","NODE_ENV","name","onAssign","onDelete","onCopy","Immer","config","setUseProxies","produce","bind","recipe","this$1","defaultBase","self","args","len","hasError","Promise","then","processResult","error","createDraft","isManual","finishDraft","setAutoFreeze","baseDraft","finalize","isFrozen","finalizeTree","root","rootPath","needPatches","finalizeProperty","isDraftProp","immer","observable","ponyfill","window","global","module","Function","randomString","Math","random","toString","substring","split","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","subscribe","listener","isSubscribed","index","indexOf","dispatch","action","isPlainObject","type","listeners","replaceReducer","nextReducer","$$observable","_ref","outerSubscribe","observer","TypeError","observeState","next","unsubscribe","_defineProperty","enumerableOnly","filter","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","compose","_len","funcs","_key","arg","reduce","a","b","applyMiddleware","middlewares","store","_dispatch","middlewareAPI","chain","map","middleware","isCrushed","createThunkMiddleware","extraArgument","message","console","e","warning","thunk","Similar","list","lastItem","size","withExtraArgument","isEqual","val","delete","callback","thisArg","val1","val2","forceSimilar","Map","require$$0","limit","cache","MapOrSimilar","FORCE_SIMILAR_INSTEAD_OF_MAP","lru","memoizerific","newMap","fnResult","currentCache","argsLengthMinusOne","lruPath","isMemoized","numArgs","cacheItem","moveToMostRecentLru","removeCachedResult","shift","wasMemoized","isMatch","ii","lruLen","lruPathLen","removedLru","tmp","removedLruLen","currentLru","StoreContext","createContext","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","Context","useStoreState","mapState","useContext","mapStateRef","useRef","stateRef","mountedRef","subscriptionMapStateError","forceRender","useReducer","s","err","errorMessage","stack","checkMapState","newState","_extends","actionSymbol","actionOnSymbol","computedSymbol","reducerSymbol","thunkOnSymbol","thunkSymbol","isStateObject","acc","cur","idx","newify","currentPath","finalValue","createStoreInternals","disableImmer","initialState","injections","model","reducerEnhancer","references","simpleProduce","_current","defaultState","actionCreatorDict","actionCreators","actionReducersDict","actionThunks","computedProperties","customReducers","listenerActionCreators","listenerActionMap","listenerDefinitions","computedState","isInReducer","recursiveExtractDefsFromModel","parentPath","meta","handleValueAsState","initialParentRef","actionMeta","actionName","actionCreator","payload","actionDefinition","resolvedTargets","_type","thunkMeta","thunkHandler","helpers","getStoreActions","getStoreState","startType","successType","failType","_actionCreator","dispatchError","dispatchSuccess","resolved","catch","computedMeta","memoisedResultFn","createComputedProperty","o","storeState","warn","inputs","stateResolvers","resolver","listenerActionOrThunk","listenerMeta","targets","targetResolver","targetTypes","targetType","listenerReg","reducerForActions","actionReducer","runActionReducerAtPath","stateAfterActions","red","reducerForCustomReducers","_ref3","hasOwn","classNames","classes","argType","inner","exports","default","noop","t","n","_","Dispatch","parseTypenames","typenames","types","trim","c","on","typename","T","that","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElement","createElementNS","creatorFixed","fullname","namespace","none","selector","querySelector","empty","querySelectorAll","matches","update","EnterNode","datum","_next","_parent","__data__","appendChild","child","insertBefore","keyPrefix","bindIndex","group","exit","data","node","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","NaN","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","getAttribute","classedAdd","names","add","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","lower","previousSibling","firstChild","constantNull","removeChild","selection_cloneShallow","cloneNode","selection_cloneDeep","contains","filterEvents","mouseenter","mouseleave","filterContextListener","contextListener","event","related","relatedTarget","compareDocumentPosition","event1","onRemove","__on","j","m","removeEventListener","capture","onAdd","wrap","d","addEventListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","Selection","groups","parents","_groups","_parents","selection","factory","extend","definition","Color","select","subgroups","subnode","subgroup","selectAll","selectorAll","match","matcher","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","sparse","onenter","onupdate","onexit","append","merge","order","groups0","groups1","m0","m1","min","merges","group0","group1","sort","compare","compareNode","sortgroups","sortgroup","nodes","attr","getAttributeNS","property","classed","text","html","creator","insert","before","deep","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","l","toLowerCase","exec","rgbn","Rgb","rgba","hsla","r","g","opacity","rgb_formatHex","hex","rgb_formatRgb","max","round","h","Hsl","hslConvert","hsl2rgb","m2","gamma","nogamma","pow","exponential","constant","linear","define","channels","displayable","formatHsl","brighter","k","darker","rgbGamma","colorRgb","reA","reB","am","bm","bs","bi","lastIndex","q","number","one","zero","cssNode","cssRoot","cssView","svgNode","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","f","sqrt","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","taskHead","taskTail","interpolateTransformCss","transform","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","stop","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","id","timing","schedules","__transition","tween","tick","duration","ease","init","schedule","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","interpolateNumber","interpolateRgb","interpolateString","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","children","inherit","id0","id1","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","removeFunction","easeConstant","resolve","reject","cancel","interrupt","defaultTiming","Transform","active","point","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","range","rescaleY","equal","flags","valueOf","setOnConnect","onConnect","setNodes","setEdges","edges","updateNodeData","__rg","updateNodePos","pos","position","setSelection","isActive","selectionActive","setNodesSelection","nodesSelectionActive","selectedElements","selectedNodes","getNodesInside","selectedNodesBbox","getBoundingBox","setSelectedElements","elements","selectedElementsArr","updateSelection","selectedEdges","getConnectedEdges","nextSelectedElements","selectedElementsUpdated","updateTransform","updateSize","width","height","initD3","zoom","d3Zoom","d3Selection","d3Initialised","setConnectionPosition","connectionPosition","setConnectionSourceId","sourceId","connectionSourceId","options","_options","compose$1","_options$devTools","devTools","_options$disableImmer","_options$enhancers","enhancers","_options$initialState","_options$middleware","_options$mockActions","mockActions","_options$name","storeName","_options$reducerEnhan","rootReducer","bindReplaceState","modelDef","easyPeasyReplaceState","modelDefinition","mockedActions","bindStoreInternals","internals","easyPeasyMiddleware","reduxThunk","sourceAction","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","createStore$1","bindActionCreators","actionsKey","rebindStore","removeKey","addModel","modelForKey","removeModel","clearMockedActions","getActions","getListeners","getMockedActions","reconfigure","newModel","actions","bbox","res","x2","y2","minX","maxX","minY","maxY","Number","MAX_VALUE","partially","bboxPos","bboxWidth","bboxHeight","nodeWidth","nodeHeight","offsetX","offsetY","nodeIds","hasSourceHandleId","includes","hasTargetHandleId","targetId","fitView","padding","bounds","maxBoundsSize","boundsCenterX","boundsCenterY","fittedTransform","zoomIdentity","zoomIn","scaleTo","zoomOut","baseStyle","zIndex","bottom","right","left","className","mapClasses","classnames","React","onClick","src","bgColor","nodeColor","canvasNode","nodePositions","scaleFactor","nodeColorFunc","isFunction","ctx","getContext","nodesInside","fillStyle","fillRect","transformX","transformY"],"mappings":"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"} \ No newline at end of file diff --git a/examples/advanced/scripts/ExampleGraph.js b/examples/advanced/scripts/ExampleGraph.js index 0ed88afd..fdd92749 100644 --- a/examples/advanced/scripts/ExampleGraph.js +++ b/examples/advanced/scripts/ExampleGraph.js @@ -1,6 +1,7 @@ import React, { PureComponent } from 'react'; -import Graph, { isEdge, removeElements, addEdge, getOutgoers, MiniMap, Controls } from '../../../src'; +import Graph, { isEdge, removeElements, addEdge, getOutgoers } from '../../../src'; +import { MiniMap, Controls } from '../../../src/plugins'; import SpecialNode from './SpecialNode'; import InputNode from './InputNode'; diff --git a/package.json b/package.json index 28221f16..4608e9c7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,6 @@ { "name": "react-flow", "version": "1.0.0", - "module": "dist/ReactFlow.esm.js", "browser": "dist/ReactFlow.min.js", "main": "dist/ReactFlow.min.js", "private": true, diff --git a/rollup.config.js b/rollup.config.js index 6cc431eb..62548b2c 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -10,15 +10,33 @@ import svg from 'rollup-plugin-svg'; import pkg from './package.json'; const isProd = process.env.NODE_ENV === 'production'; +const external = ['react', 'react-dom', 'prop-types']; +const onwarn = (warning, rollupWarn) => { + if (warning.code !== 'CIRCULAR_DEPENDENCY') { + rollupWarn(warning); + } +}; +const plugins = [ + bundleSize(), + postcss({ + extract: isProd + }), + resolve(), + babel({ + exclude: 'node_modules/**' + }), + commonjs({ + include: /node_modules/ + }), + svg(), + visualizer(), + isProd && terser() +]; export default [{ input: 'src/index.js', - external: ['react', 'react-dom', 'prop-types'], - onwarn(warning, rollupWarn) { - if (warning.code !== 'CIRCULAR_DEPENDENCY') { - rollupWarn(warning); - } - }, + external: external, + onwarn, output: { name: 'ReactFlow', file: pkg.browser, @@ -30,20 +48,21 @@ export default [{ 'prop-types': 'PropTypes' } }, - plugins: [ - bundleSize(), - postcss({ - extract: isProd - }), - resolve(), - babel({ - exclude: 'node_modules/**' - }), - commonjs({ - include: /node_modules/ - }), - svg(), - visualizer(), - isProd && terser() - ]} -]; + plugins +}, { + input: 'src/plugins/index.js', + external: external, + onwarn, + output: { + name: 'ReactFlow Plugins', + file: 'dist/plugins/index.js', + format: 'umd', + sourcemap: isProd, + globals: { + react: 'React', + 'react-dom': 'ReactDOM', + 'prop-types': 'PropTypes' + } + }, + plugins +}]; diff --git a/src/index.js b/src/index.js index d6ab8208..fd2b55fb 100644 --- a/src/index.js +++ b/src/index.js @@ -3,7 +3,6 @@ import ReactFlow from './container/ReactFlow'; export default ReactFlow; export { default as Handle } from './components/Handle'; -export { MiniMap, Controls } from './plugins'; export { isNode, diff --git a/src/utils/graph.js b/src/utils/graph.js index c6c4cd57..98bd5a56 100644 --- a/src/utils/graph.js +++ b/src/utils/graph.js @@ -182,14 +182,3 @@ export const zoomOut = () => { const state = store.getState(); state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] - 0.2); }; - -export default { - isEdge, - getBoundingBox, - graphPosToZoomedPos, - getConnectedEdges, - parseElement, - fitView, - zoomIn, - zoomOut -};