diff --git a/.gitignore b/.gitignore index 7d43bb87..9fc424fe 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ node_modules examples/build cypress/videos cypress/screenshots -stats.html \ No newline at end of file +stats.html +dist \ No newline at end of file diff --git a/.npmignore b/.npmignore new file mode 100644 index 00000000..1f72ec4f --- /dev/null +++ b/.npmignore @@ -0,0 +1,9 @@ +.DS_Store +.cache +.vscode +.dependabot +node_modules +examples +cypress +stats.html +dist \ No newline at end of file diff --git a/.release-it.json b/.release-it.json index 01122e8a..098bcfbe 100644 --- a/.release-it.json +++ b/.release-it.json @@ -4,5 +4,10 @@ }, "github": { "release": true + }, + "hooks": { + "before:init": ["npm test"], + "after:bump": "npm run build", + "after:release": "echo Successfully released ${name} v${version} to ${repo.repository}." } } diff --git a/dist/ReactFlow.esm.js b/dist/ReactFlow.esm.js deleted file mode 100644 index f82188bf..00000000 --- a/dist/ReactFlow.esm.js +++ /dev/null @@ -1,10549 +0,0 @@ -import React__default, { createContext, useContext, useRef, useReducer, useLayoutEffect, useEffect, useState, memo, useMemo, createElement } from 'react'; -import ReactDOM from 'react-dom'; - -var obj; -var NOTHING = typeof Symbol !== "undefined" ? Symbol("immer-nothing") : ( obj = {}, obj["immer-nothing"] = true, obj ); -var DRAFTABLE = typeof Symbol !== "undefined" && Symbol.for ? Symbol.for("immer-draftable") : "__$immer_draftable"; -var DRAFT_STATE = typeof Symbol !== "undefined" && Symbol.for ? Symbol.for("immer-state") : "__$immer_state"; -function isDraft(value) { - return !!value && !!value[DRAFT_STATE]; -} -function isDraftable(value) { - if (!value || typeof value !== "object") { return false; } - if (Array.isArray(value)) { return true; } - var proto = Object.getPrototypeOf(value); - if (!proto || proto === Object.prototype) { return true; } - return !!value[DRAFTABLE] || !!value.constructor[DRAFTABLE]; -} -var assign = Object.assign || function assign(target, value) { - for (var key in value) { - if (has(value, key)) { - target[key] = value[key]; - } - } - - return target; -}; -var ownKeys = typeof Reflect !== "undefined" && Reflect.ownKeys ? Reflect.ownKeys : typeof Object.getOwnPropertySymbols !== "undefined" ? function (obj) { return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj)); } : Object.getOwnPropertyNames; -function shallowCopy(base, invokeGetters) { - if ( invokeGetters === void 0 ) invokeGetters = false; - - if (Array.isArray(base)) { return base.slice(); } - var clone = Object.create(Object.getPrototypeOf(base)); - ownKeys(base).forEach(function (key) { - if (key === DRAFT_STATE) { - return; // Never copy over draft state. - } - - var desc = Object.getOwnPropertyDescriptor(base, key); - var value = desc.value; - - if (desc.get) { - if (invokeGetters) { - value = desc.get.call(base); - } - } - - if (desc.enumerable) { - clone[key] = value; - } else if (invokeGetters) { - Object.defineProperty(clone, key, { - value: value, - writable: true, - configurable: true - }); - } - }); - return clone; -} -function each(value, cb) { - if (Array.isArray(value)) { - for (var i = 0; i < value.length; i++) { cb(i, value[i], value); } - } else { - ownKeys(value).forEach(function (key) { return cb(key, value[key], value); }); - } -} -function isEnumerable(base, prop) { - var desc = Object.getOwnPropertyDescriptor(base, prop); - return !!desc && desc.enumerable; -} -function has(thing, prop) { - return Object.prototype.hasOwnProperty.call(thing, prop); -} -function is(x, y) { - // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js - if (x === y) { - return x !== 0 || 1 / x === 1 / y; - } else { - return x !== x && y !== y; - } -} - -/** Each scope represents a `produce` call. */ - -var ImmerScope = function ImmerScope(parent) { - this.drafts = []; - this.parent = parent; // Whenever the modified draft contains a draft from another scope, we - // need to prevent auto-freezing so the unowned draft can be finalized. - - this.canAutoFreeze = true; // To avoid prototype lookups: - - this.patches = null; -}; - -ImmerScope.prototype.usePatches = function usePatches (patchListener) { - if (patchListener) { - this.patches = []; - this.inversePatches = []; - this.patchListener = patchListener; - } -}; - -ImmerScope.prototype.revoke = function revoke$1 () { - this.leave(); - this.drafts.forEach(revoke); - this.drafts = null; // Make draft-related methods throw. -}; - -ImmerScope.prototype.leave = function leave () { - if (this === ImmerScope.current) { - ImmerScope.current = this.parent; - } -}; -ImmerScope.current = null; - -ImmerScope.enter = function () { - return this.current = new ImmerScope(this.current); -}; - -function revoke(draft) { - draft[DRAFT_STATE].revoke(); -} - -// but share them all instead - -var descriptors = {}; -function willFinalize(scope, result, isReplaced) { - scope.drafts.forEach(function (draft) { - draft[DRAFT_STATE].finalizing = true; - }); - - if (!isReplaced) { - if (scope.patches) { - markChangesRecursively(scope.drafts[0]); - } // This is faster when we don't care about which attributes changed. - - - markChangesSweep(scope.drafts); - } // When a child draft is returned, look for changes. - else if (isDraft(result) && result[DRAFT_STATE].scope === scope) { - markChangesSweep(scope.drafts); - } -} -function createProxy(base, parent) { - var isArray = Array.isArray(base); - var draft = clonePotentialDraft(base); - each(draft, function (prop) { - proxyProperty(draft, prop, isArray || isEnumerable(base, prop)); - }); // See "proxy.js" for property documentation. - - var scope = parent ? parent.scope : ImmerScope.current; - var state = { - scope: scope, - modified: false, - finalizing: false, - // es5 only - finalized: false, - assigned: {}, - parent: parent, - base: base, - draft: draft, - copy: null, - revoke: revoke$1, - revoked: false // es5 only - - }; - createHiddenProperty(draft, DRAFT_STATE, state); - scope.drafts.push(draft); - return draft; -} - -function revoke$1() { - this.revoked = true; -} - -function source(state) { - return state.copy || state.base; -} // Access a property without creating an Immer draft. - - -function peek(draft, prop) { - var state = draft[DRAFT_STATE]; - - if (state && !state.finalizing) { - state.finalizing = true; - var value = draft[prop]; - state.finalizing = false; - return value; - } - - return draft[prop]; -} - -function get(state, prop) { - assertUnrevoked(state); - var value = peek(source(state), prop); - if (state.finalizing) { return value; } // Create a draft if the value is unmodified. - - if (value === peek(state.base, prop) && isDraftable(value)) { - prepareCopy(state); - return state.copy[prop] = createProxy(value, state); - } - - return value; -} - -function set(state, prop, value) { - assertUnrevoked(state); - state.assigned[prop] = true; - - if (!state.modified) { - if (is(value, peek(source(state), prop))) { return; } - markChanged(state); - prepareCopy(state); - } - - state.copy[prop] = value; -} - -function markChanged(state) { - if (!state.modified) { - state.modified = true; - if (state.parent) { markChanged(state.parent); } - } -} - -function prepareCopy(state) { - if (!state.copy) { state.copy = clonePotentialDraft(state.base); } -} - -function clonePotentialDraft(base) { - var state = base && base[DRAFT_STATE]; - - if (state) { - state.finalizing = true; - var draft = shallowCopy(state.draft, true); - state.finalizing = false; - return draft; - } - - return shallowCopy(base); -} - -function proxyProperty(draft, prop, enumerable) { - var desc = descriptors[prop]; - - if (desc) { - desc.enumerable = enumerable; - } else { - descriptors[prop] = desc = { - configurable: true, - enumerable: enumerable, - - get: function get$1() { - return get(this[DRAFT_STATE], prop); - }, - - set: function set$1(value) { - set(this[DRAFT_STATE], prop, value); - } - - }; - } - - Object.defineProperty(draft, prop, desc); -} - -function assertUnrevoked(state) { - 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))); } -} // This looks expensive, but only proxies are visited, and only objects without known changes are scanned. - - -function markChangesSweep(drafts) { - // The natural order of drafts in the `scope` array is based on when they - // were accessed. By processing drafts in reverse natural order, we have a - // better chance of processing leaf nodes first. When a leaf node is known to - // have changed, we can avoid any traversal of its ancestor nodes. - for (var i = drafts.length - 1; i >= 0; i--) { - var state = drafts[i][DRAFT_STATE]; - - if (!state.modified) { - if (Array.isArray(state.base)) { - if (hasArrayChanges(state)) { markChanged(state); } - } else if (hasObjectChanges(state)) { markChanged(state); } - } - } -} - -function markChangesRecursively(object) { - if (!object || typeof object !== "object") { return; } - var state = object[DRAFT_STATE]; - if (!state) { return; } - var base = state.base; - var draft = state.draft; - var assigned = state.assigned; - - if (!Array.isArray(object)) { - // Look for added keys. - Object.keys(draft).forEach(function (key) { - // The `undefined` check is a fast path for pre-existing keys. - if (base[key] === undefined && !has(base, key)) { - assigned[key] = true; - markChanged(state); - } else if (!assigned[key]) { - // Only untouched properties trigger recursion. - markChangesRecursively(draft[key]); - } - }); // Look for removed keys. - - Object.keys(base).forEach(function (key) { - // The `undefined` check is a fast path for pre-existing keys. - if (draft[key] === undefined && !has(draft, key)) { - assigned[key] = false; - markChanged(state); - } - }); - } else if (hasArrayChanges(state)) { - markChanged(state); - assigned.length = true; - - if (draft.length < base.length) { - for (var i = draft.length; i < base.length; i++) { assigned[i] = false; } - } else { - for (var i$1 = base.length; i$1 < draft.length; i$1++) { assigned[i$1] = true; } - } - - for (var i$2 = 0; i$2 < draft.length; i$2++) { - // Only untouched indices trigger recursion. - if (assigned[i$2] === undefined) { markChangesRecursively(draft[i$2]); } - } - } -} - -function hasObjectChanges(state) { - var base = state.base; - var draft = state.draft; // Search for added keys and changed keys. Start at the back, because - // non-numeric keys are ordered by time of definition on the object. - - var keys = Object.keys(draft); - - for (var i = keys.length - 1; i >= 0; i--) { - var key = keys[i]; - var baseValue = base[key]; // The `undefined` check is a fast path for pre-existing keys. - - if (baseValue === undefined && !has(base, key)) { - return true; - } // Once a base key is deleted, future changes go undetected, because its - // descriptor is erased. This branch detects any missed changes. - else { - var value = draft[key]; - var state$1 = value && value[DRAFT_STATE]; - - if (state$1 ? state$1.base !== baseValue : !is(value, baseValue)) { - return true; - } - } - } // At this point, no keys were added or changed. - // Compare key count to determine if keys were deleted. - - - return keys.length !== Object.keys(base).length; -} - -function hasArrayChanges(state) { - var draft = state.draft; - if (draft.length !== state.base.length) { return true; } // See #116 - // If we first shorten the length, our array interceptors will be removed. - // If after that new items are added, result in the same original length, - // those last items will have no intercepting property. - // So if there is no own descriptor on the last position, we know that items were removed and added - // N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check - // the last one - - var descriptor = Object.getOwnPropertyDescriptor(draft, draft.length - 1); // descriptor can be null, but only for newly created sparse arrays, eg. new Array(10) - - 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 - - return false; -} - -function createHiddenProperty(target, prop, value) { - Object.defineProperty(target, prop, { - value: value, - enumerable: false, - writable: true - }); -} - -var legacyProxy = /*#__PURE__*/Object.freeze({ - willFinalize: willFinalize, - createProxy: createProxy -}); - -function willFinalize$1() {} -function createProxy$1(base, parent) { - var scope = parent ? parent.scope : ImmerScope.current; - var state = { - // Track which produce call this is associated with. - scope: scope, - // True for both shallow and deep changes. - modified: false, - // Used during finalization. - finalized: false, - // Track which properties have been assigned (true) or deleted (false). - assigned: {}, - // The parent draft state. - parent: parent, - // The base state. - base: base, - // The base proxy. - draft: null, - // Any property proxies. - drafts: {}, - // The base copy with any updated values. - copy: null, - // Called by the `produce` function. - revoke: null - }; - var ref = Array.isArray(base) ? // [state] is used for arrays, to make sure the proxy is array-ish and not violate invariants, - // although state itself is an object - Proxy.revocable([state], arrayTraps) : Proxy.revocable(state, objectTraps); - var revoke = ref.revoke; - var proxy = ref.proxy; - state.draft = proxy; - state.revoke = revoke; - scope.drafts.push(proxy); - return proxy; -} -var objectTraps = { - get: get$1, - - has: function has(target, prop) { - return prop in source$1(target); - }, - - ownKeys: function ownKeys(target) { - return Reflect.ownKeys(source$1(target)); - }, - - set: set$1, - deleteProperty: deleteProperty, - getOwnPropertyDescriptor: getOwnPropertyDescriptor, - - defineProperty: function defineProperty() { - throw new Error("Object.defineProperty() cannot be used on an Immer draft"); // prettier-ignore - }, - - getPrototypeOf: function getPrototypeOf(target) { - return Object.getPrototypeOf(target.base); - }, - - setPrototypeOf: function setPrototypeOf() { - throw new Error("Object.setPrototypeOf() cannot be used on an Immer draft"); // prettier-ignore - } - -}; -var arrayTraps = {}; -each(objectTraps, function (key, fn) { - arrayTraps[key] = function () { - arguments[0] = arguments[0][0]; - return fn.apply(this, arguments); - }; -}); - -arrayTraps.deleteProperty = function (state, prop) { - if (isNaN(parseInt(prop))) { - throw new Error("Immer only supports deleting array indices"); // prettier-ignore - } - - return objectTraps.deleteProperty.call(this, state[0], prop); -}; - -arrayTraps.set = function (state, prop, value) { - if (prop !== "length" && isNaN(parseInt(prop))) { - throw new Error("Immer only supports setting array indices and the 'length' property"); // prettier-ignore - } - - return objectTraps.set.call(this, state[0], prop, value); -}; // returns the object we should be reading the current value from, which is base, until some change has been made - - -function source$1(state) { - return state.copy || state.base; -} // Access a property without creating an Immer draft. - - -function peek$1(draft, prop) { - var state = draft[DRAFT_STATE]; - var desc = Reflect.getOwnPropertyDescriptor(state ? source$1(state) : draft, prop); - return desc && desc.value; -} - -function get$1(state, prop) { - if (prop === DRAFT_STATE) { return state; } - var drafts = state.drafts; // Check for existing draft in unmodified state. - - if (!state.modified && has(drafts, prop)) { - return drafts[prop]; - } - - var value = source$1(state)[prop]; - - if (state.finalized || !isDraftable(value)) { - return value; - } // Check for existing draft in modified state. - - - if (state.modified) { - // Assigned values are never drafted. This catches any drafts we created, too. - if (value !== peek$1(state.base, prop)) { return value; } // Store drafts on the copy (when one exists). - - drafts = state.copy; - } - - return drafts[prop] = createProxy$1(value, state); -} - -function set$1(state, prop, value) { - if (!state.modified) { - var baseValue = peek$1(state.base, prop); // Optimize based on value's truthiness. Truthy values are guaranteed to - // never be undefined, so we can avoid the `in` operator. Lastly, truthy - // values may be drafts, but falsy values are never drafts. - - var isUnchanged = value ? is(baseValue, value) || value === state.drafts[prop] : is(baseValue, value) && prop in state.base; - if (isUnchanged) { return true; } - markChanged$1(state); - } - - state.assigned[prop] = true; - state.copy[prop] = value; - return true; -} - -function deleteProperty(state, prop) { - // The `undefined` check is a fast path for pre-existing keys. - if (peek$1(state.base, prop) !== undefined || prop in state.base) { - state.assigned[prop] = false; - markChanged$1(state); - } - - if (state.copy) { delete state.copy[prop]; } - return true; -} // Note: We never coerce `desc.value` into an Immer draft, because we can't make -// the same guarantee in ES5 mode. - - -function getOwnPropertyDescriptor(state, prop) { - var owner = source$1(state); - var desc = Reflect.getOwnPropertyDescriptor(owner, prop); - - if (desc) { - desc.writable = true; - desc.configurable = !Array.isArray(owner) || prop !== "length"; - } - - return desc; -} - -function markChanged$1(state) { - if (!state.modified) { - state.modified = true; - state.copy = assign(shallowCopy(state.base), state.drafts); - state.drafts = null; - if (state.parent) { markChanged$1(state.parent); } - } -} - -var modernProxy = /*#__PURE__*/Object.freeze({ - willFinalize: willFinalize$1, - createProxy: createProxy$1 -}); - -function generatePatches(state, basePath, patches, inversePatches) { - Array.isArray(state.base) ? generateArrayPatches(state, basePath, patches, inversePatches) : generateObjectPatches(state, basePath, patches, inversePatches); -} - -function generateArrayPatches(state, basePath, patches, inversePatches) { - var assign, assign$1; - - var base = state.base; - var copy = state.copy; - var assigned = state.assigned; // Reduce complexity by ensuring `base` is never longer. - - if (copy.length < base.length) { - (assign = [copy, base], base = assign[0], copy = assign[1]); - (assign$1 = [inversePatches, patches], patches = assign$1[0], inversePatches = assign$1[1]); - } - - var delta = copy.length - base.length; // Find the first replaced index. - - var start = 0; - - while (base[start] === copy[start] && start < base.length) { - ++start; - } // Find the last replaced index. Search from the end to optimize splice patches. - - - var end = base.length; - - while (end > start && base[end - 1] === copy[end + delta - 1]) { - --end; - } // Process replaced indices. - - - for (var i = start; i < end; ++i) { - if (assigned[i] && copy[i] !== base[i]) { - var path = basePath.concat([i]); - patches.push({ - op: "replace", - path: path, - value: copy[i] - }); - inversePatches.push({ - op: "replace", - path: path, - value: base[i] - }); - } - } - - var useRemove = end != base.length; - var replaceCount = patches.length; // Process added indices. - - for (var i$1 = end + delta - 1; i$1 >= end; --i$1) { - var path$1 = basePath.concat([i$1]); - patches[replaceCount + i$1 - end] = { - op: "add", - path: path$1, - value: copy[i$1] - }; - - if (useRemove) { - inversePatches.push({ - op: "remove", - path: path$1 - }); - } - } // One "replace" patch reverses all non-splicing "add" patches. - - - if (!useRemove) { - inversePatches.push({ - op: "replace", - path: basePath.concat(["length"]), - value: base.length - }); - } -} - -function generateObjectPatches(state, basePath, patches, inversePatches) { - var base = state.base; - var copy = state.copy; - each(state.assigned, function (key, assignedValue) { - var origValue = base[key]; - var value = copy[key]; - var op = !assignedValue ? "remove" : key in base ? "replace" : "add"; - if (origValue === value && op === "replace") { return; } - var path = basePath.concat(key); - patches.push(op === "remove" ? { - op: op, - path: path - } : { - op: op, - path: path, - value: value - }); - inversePatches.push(op === "add" ? { - op: "remove", - path: path - } : op === "remove" ? { - op: "add", - path: path, - value: origValue - } : { - op: "replace", - path: path, - value: origValue - }); - }); -} - -function applyPatches(draft, patches) { - for (var i = 0; i < patches.length; i++) { - var patch = patches[i]; - var path = patch.path; - - if (path.length === 0 && patch.op === "replace") { - draft = patch.value; - } else { - var base = draft; - - for (var i$1 = 0; i$1 < path.length - 1; i$1++) { - base = base[path[i$1]]; - if (!base || typeof base !== "object") { throw new Error("Cannot apply patch, path doesn't resolve: " + path.join("/")); } // prettier-ignore - } - - var key = path[path.length - 1]; - - switch (patch.op) { - case "replace": - base[key] = patch.value; - break; - - case "add": - if (Array.isArray(base)) { - // TODO: support "foo/-" paths for appending to an array - base.splice(key, 0, patch.value); - } else { - base[key] = patch.value; - } - - break; - - case "remove": - if (Array.isArray(base)) { - base.splice(key, 1); - } else { - delete base[key]; - } - - break; - - default: - throw new Error("Unsupported patch operation: " + patch.op); - } - } - } - - return draft; -} - -function verifyMinified() {} - -var configDefaults = { - useProxies: typeof Proxy !== "undefined" && typeof Reflect !== "undefined", - autoFreeze: typeof process !== "undefined" ? "development" !== "production" : verifyMinified.name === "verifyMinified", - onAssign: null, - onDelete: null, - onCopy: null -}; -var Immer = function Immer(config) { - assign(this, configDefaults, config); - this.setUseProxies(this.useProxies); - this.produce = this.produce.bind(this); -}; - -Immer.prototype.produce = function produce (base, recipe, patchListener) { - var this$1 = this; - - // curried invocation - if (typeof base === "function" && typeof recipe !== "function") { - var defaultBase = recipe; - recipe = base; - var self = this; - return function curriedProduce(base) { - var this$1 = this; - if ( base === void 0 ) base = defaultBase; - var args = [], len = arguments.length - 1; - while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ]; - - return self.produce(base, function (draft) { return recipe.call.apply(recipe, [ this$1, draft ].concat( args )); }); // prettier-ignore - }; - } // prettier-ignore - - - { - if (typeof recipe !== "function") { - throw new Error("The first or second argument to `produce` must be a function"); - } - - if (patchListener !== undefined && typeof patchListener !== "function") { - throw new Error("The third argument to `produce` must be a function or undefined"); - } - } - var result; // Only plain objects, arrays, and "immerable classes" are drafted. - - if (isDraftable(base)) { - var scope = ImmerScope.enter(); - var proxy = this.createProxy(base); - var hasError = true; - - try { - result = recipe(proxy); - hasError = false; - } finally { - // finally instead of catch + rethrow better preserves original stack - if (hasError) { scope.revoke(); }else { scope.leave(); } - } - - if (result instanceof Promise) { - return result.then(function (result) { - scope.usePatches(patchListener); - return this$1.processResult(result, scope); - }, function (error) { - scope.revoke(); - throw error; - }); - } - - scope.usePatches(patchListener); - return this.processResult(result, scope); - } else { - result = recipe(base); - if (result === undefined) { return base; } - return result !== NOTHING ? result : undefined; - } -}; - -Immer.prototype.createDraft = function createDraft (base) { - if (!isDraftable(base)) { - throw new Error("First argument to `createDraft` must be a plain object, an array, or an immerable object"); // prettier-ignore - } - - var scope = ImmerScope.enter(); - var proxy = this.createProxy(base); - proxy[DRAFT_STATE].isManual = true; - scope.leave(); - return proxy; -}; - -Immer.prototype.finishDraft = function finishDraft (draft, patchListener) { - var state = draft && draft[DRAFT_STATE]; - - if (!state || !state.isManual) { - throw new Error("First argument to `finishDraft` must be a draft returned by `createDraft`"); // prettier-ignore - } - - if (state.finalized) { - throw new Error("The given draft is already finalized"); // prettier-ignore - } - - var scope = state.scope; - scope.usePatches(patchListener); - return this.processResult(undefined, scope); -}; - -Immer.prototype.setAutoFreeze = function setAutoFreeze (value) { - this.autoFreeze = value; -}; - -Immer.prototype.setUseProxies = function setUseProxies (value) { - this.useProxies = value; - assign(this, value ? modernProxy : legacyProxy); -}; - -Immer.prototype.applyPatches = function applyPatches$1 (base, patches) { - // Mutate the base state when a draft is passed. - if (isDraft(base)) { - return applyPatches(base, patches); - } // Otherwise, produce a copy of the base state. - - - return this.produce(base, function (draft) { return applyPatches(draft, patches); }); -}; -/** @internal */ - - -Immer.prototype.processResult = function processResult (result, scope) { - var baseDraft = scope.drafts[0]; - var isReplaced = result !== undefined && result !== baseDraft; - this.willFinalize(scope, result, isReplaced); - - if (isReplaced) { - if (baseDraft[DRAFT_STATE].modified) { - scope.revoke(); - 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 - } - - if (isDraftable(result)) { - // Finalize the result in case it contains (or is) a subset of the draft. - result = this.finalize(result, null, scope); - } - - if (scope.patches) { - scope.patches.push({ - op: "replace", - path: [], - value: result - }); - scope.inversePatches.push({ - op: "replace", - path: [], - value: baseDraft[DRAFT_STATE].base - }); - } - } else { - // Finalize the base draft. - result = this.finalize(baseDraft, [], scope); - } - - scope.revoke(); - - if (scope.patches) { - scope.patchListener(scope.patches, scope.inversePatches); - } - - return result !== NOTHING ? result : undefined; -}; -/** - * @internal - * Finalize a draft, returning either the unmodified base state or a modified - * copy of the base state. - */ - - -Immer.prototype.finalize = function finalize (draft, path, scope) { - var this$1 = this; - - var state = draft[DRAFT_STATE]; - - if (!state) { - if (Object.isFrozen(draft)) { return draft; } - return this.finalizeTree(draft, null, scope); - } // Never finalize drafts owned by another scope. - - - if (state.scope !== scope) { - return draft; - } - - if (!state.modified) { - return state.base; - } - - if (!state.finalized) { - state.finalized = true; - this.finalizeTree(state.draft, path, scope); - - if (this.onDelete) { - // The `assigned` object is unreliable with ES5 drafts. - if (this.useProxies) { - var assigned = state.assigned; - - for (var prop in assigned) { - if (!assigned[prop]) { this.onDelete(state, prop); } - } - } else { - var base = state.base; - var copy = state.copy; - each(base, function (prop) { - if (!has(copy, prop)) { this$1.onDelete(state, prop); } - }); - } - } - - if (this.onCopy) { - this.onCopy(state); - } // At this point, all descendants of `state.copy` have been finalized, - // so we can be sure that `scope.canAutoFreeze` is accurate. - - - if (this.autoFreeze && scope.canAutoFreeze) { - Object.freeze(state.copy); - } - - if (path && scope.patches) { - generatePatches(state, path, scope.patches, scope.inversePatches); - } - } - - return state.copy; -}; -/** - * @internal - * Finalize all drafts in the given state tree. - */ - - -Immer.prototype.finalizeTree = function finalizeTree (root, rootPath, scope) { - var this$1 = this; - - var state = root[DRAFT_STATE]; - - if (state) { - if (!this.useProxies) { - // Create the final copy, with added keys and without deleted keys. - state.copy = shallowCopy(state.draft, true); - } - - root = state.copy; - } - - var needPatches = !!rootPath && !!scope.patches; - - var finalizeProperty = function (prop, value, parent) { - if (value === parent) { - throw Error("Immer forbids circular references"); - } // In the `finalizeTree` method, only the `root` object may be a draft. - - - var isDraftProp = !!state && parent === root; - - if (isDraft(value)) { - var path = isDraftProp && needPatches && !state.assigned[prop] ? rootPath.concat(prop) : null; // Drafts owned by `scope` are finalized here. - - value = this$1.finalize(value, path, scope); // Drafts from another scope must prevent auto-freezing. - - if (isDraft(value)) { - scope.canAutoFreeze = false; - } // Preserve non-enumerable properties. - - - if (Array.isArray(parent) || isEnumerable(parent, prop)) { - parent[prop] = value; - } else { - Object.defineProperty(parent, prop, { - value: value - }); - } // Unchanged drafts are never passed to the `onAssign` hook. - - - if (isDraftProp && value === state.base[prop]) { return; } - } // Unchanged draft properties are ignored. - else if (isDraftProp && is(value, state.base[prop])) { - return; - } // Search new objects for unfinalized drafts. Frozen objects should never contain drafts. - else if (isDraftable(value) && !Object.isFrozen(value)) { - each(value, finalizeProperty); - } - - if (isDraftProp && this$1.onAssign) { - this$1.onAssign(state, prop, value); - } - }; - - each(root, finalizeProperty); - return root; -}; - -var immer = new Immer(); -/** - * Pass true to automatically freeze all copies created by Immer. - * - * By default, auto-freezing is disabled in production. - */ - -var setAutoFreeze = immer.setAutoFreeze.bind(immer); -/** - * Pass true to use the ES2015 `Proxy` class when creating drafts, which is - * always faster than using ES5 proxies. - * - * By default, feature detection is used, so calling this is rarely necessary. - */ - -var setUseProxies = immer.setUseProxies.bind(immer); -/** - * Apply an array of Immer patches to the first argument. - * - * This function is a producer, which means copy-on-write is in effect. - */ - -var applyPatches$1 = immer.applyPatches.bind(immer); -/** - * Create an Immer draft from the given base state, which may be a draft itself. - * The draft can be modified until you finalize it with the `finishDraft` function. - */ - -var createDraft = immer.createDraft.bind(immer); -/** - * Finalize an Immer draft from a `createDraft` call, returning the base state - * (if no changes were made) or a modified copy. The draft must *not* be - * mutated afterwards. - * - * Pass a function as the 2nd argument to generate Immer patches based on the - * changes that were made. - */ - -var finishDraft = immer.finishDraft.bind(immer); - -function symbolObservablePonyfill(root) { - var result; - var Symbol = root.Symbol; - - if (typeof Symbol === 'function') { - if (Symbol.observable) { - result = Symbol.observable; - } else { - result = Symbol('observable'); - Symbol.observable = result; - } - } else { - result = '@@observable'; - } - - return result; -} - -/* global window */ - -var root; - -if (typeof self !== 'undefined') { - root = self; -} else if (typeof window !== 'undefined') { - root = window; -} else if (typeof global !== 'undefined') { - root = global; -} else if (typeof module !== 'undefined') { - root = module; -} else { - root = Function('return this')(); -} - -var result = symbolObservablePonyfill(root); - -/** - * These are private action types reserved by Redux. - * For any unknown actions, you must return the current state. - * If the current state is undefined, you must return the initial state. - * Do not reference these action types directly in your code. - */ -var randomString = function randomString() { - return Math.random().toString(36).substring(7).split('').join('.'); -}; - -var ActionTypes = { - INIT: "@@redux/INIT" + randomString(), - REPLACE: "@@redux/REPLACE" + randomString(), - PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() { - return "@@redux/PROBE_UNKNOWN_ACTION" + randomString(); - } -}; - -/** - * @param {any} obj The object to inspect. - * @returns {boolean} True if the argument appears to be a plain object. - */ -function isPlainObject(obj) { - if (typeof obj !== 'object' || obj === null) return false; - var proto = obj; - - while (Object.getPrototypeOf(proto) !== null) { - proto = Object.getPrototypeOf(proto); - } - - return Object.getPrototypeOf(obj) === proto; -} - -/** - * Creates a Redux store that holds the state tree. - * The only way to change the data in the store is to call `dispatch()` on it. - * - * There should only be a single store in your app. To specify how different - * parts of the state tree respond to actions, you may combine several reducers - * into a single reducer function by using `combineReducers`. - * - * @param {Function} reducer A function that returns the next state tree, given - * the current state tree and the action to handle. - * - * @param {any} [preloadedState] The initial state. You may optionally specify it - * to hydrate the state from the server in universal apps, or to restore a - * previously serialized user session. - * If you use `combineReducers` to produce the root reducer function, this must be - * an object with the same shape as `combineReducers` keys. - * - * @param {Function} [enhancer] The store enhancer. You may optionally specify it - * to enhance the store with third-party capabilities such as middleware, - * time travel, persistence, etc. The only store enhancer that ships with Redux - * is `applyMiddleware()`. - * - * @returns {Store} A Redux store that lets you read the state, dispatch actions - * and subscribe to changes. - */ - -function createStore(reducer, preloadedState, enhancer) { - var _ref2; - - if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') { - 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 (typeof preloadedState === 'function' && typeof enhancer === 'undefined') { - enhancer = preloadedState; - preloadedState = undefined; - } - - if (typeof enhancer !== 'undefined') { - if (typeof enhancer !== 'function') { - throw new Error('Expected the enhancer to be a function.'); - } - - return enhancer(createStore)(reducer, preloadedState); - } - - if (typeof reducer !== 'function') { - throw new Error('Expected the reducer to be a function.'); - } - - var currentReducer = reducer; - var currentState = preloadedState; - var currentListeners = []; - var nextListeners = currentListeners; - var isDispatching = false; - /** - * This makes a shallow copy of currentListeners so we can use - * nextListeners as a temporary list while dispatching. - * - * This prevents any bugs around consumers calling - * subscribe/unsubscribe in the middle of a dispatch. - */ - - function ensureCanMutateNextListeners() { - if (nextListeners === currentListeners) { - nextListeners = currentListeners.slice(); - } - } - /** - * Reads the state tree managed by the store. - * - * @returns {any} The current state tree of your application. - */ - - - function getState() { - if (isDispatching) { - 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 currentState; - } - /** - * Adds a change listener. It will be called any time an action is dispatched, - * and some part of the state tree may potentially have changed. You may then - * call `getState()` to read the current state tree inside the callback. - * - * You may call `dispatch()` from a change listener, with the following - * caveats: - * - * 1. The subscriptions are snapshotted just before every `dispatch()` call. - * If you subscribe or unsubscribe while the listeners are being invoked, this - * will not have any effect on the `dispatch()` that is currently in progress. - * However, the next `dispatch()` call, whether nested or not, will use a more - * recent snapshot of the subscription list. - * - * 2. The listener should not expect to see all state changes, as the state - * might have been updated multiple times during a nested `dispatch()` before - * the listener is called. It is, however, guaranteed that all subscribers - * registered before the `dispatch()` started will be called with the latest - * state by the time it exits. - * - * @param {Function} listener A callback to be invoked on every dispatch. - * @returns {Function} A function to remove this change listener. - */ - - - function subscribe(listener) { - if (typeof listener !== 'function') { - throw new Error('Expected the listener to be a function.'); - } - - if (isDispatching) { - 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#subscribelistener for more details.'); - } - - var isSubscribed = true; - ensureCanMutateNextListeners(); - nextListeners.push(listener); - return function unsubscribe() { - if (!isSubscribed) { - return; - } - - if (isDispatching) { - throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.'); - } - - isSubscribed = false; - ensureCanMutateNextListeners(); - var index = nextListeners.indexOf(listener); - nextListeners.splice(index, 1); - currentListeners = null; - }; - } - /** - * Dispatches an action. It is the only way to trigger a state change. - * - * The `reducer` function, used to create the store, will be called with the - * current state tree and the given `action`. Its return value will - * be considered the **next** state of the tree, and the change listeners - * will be notified. - * - * The base implementation only supports plain object actions. If you want to - * dispatch a Promise, an Observable, a thunk, or something else, you need to - * wrap your store creating function into the corresponding middleware. For - * example, see the documentation for the `redux-thunk` package. Even the - * middleware will eventually dispatch plain object actions using this method. - * - * @param {Object} action A plain object representing “what changed”. It is - * a good idea to keep actions serializable so you can record and replay user - * sessions, or use the time travelling `redux-devtools`. An action must have - * a `type` property which may not be `undefined`. It is a good idea to use - * string constants for action types. - * - * @returns {Object} For convenience, the same action object you dispatched. - * - * Note that, if you use a custom middleware, it may wrap `dispatch()` to - * return something else (for example, a Promise you can await). - */ - - - function dispatch(action) { - if (!isPlainObject(action)) { - throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.'); - } - - if (typeof action.type === 'undefined') { - throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?'); - } - - if (isDispatching) { - throw new Error('Reducers may not dispatch actions.'); - } - - try { - isDispatching = true; - currentState = currentReducer(currentState, action); - } finally { - isDispatching = false; - } - - var listeners = currentListeners = nextListeners; - - for (var i = 0; i < listeners.length; i++) { - var listener = listeners[i]; - listener(); - } - - return action; - } - /** - * Replaces the reducer currently used by the store to calculate the state. - * - * You might need this if your app implements code splitting and you want to - * load some of the reducers dynamically. You might also need this if you - * implement a hot reloading mechanism for Redux. - * - * @param {Function} nextReducer The reducer for the store to use instead. - * @returns {void} - */ - - - function replaceReducer(nextReducer) { - if (typeof nextReducer !== 'function') { - throw new Error('Expected the nextReducer to be a function.'); - } - - currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT. - // Any reducers that existed in both the new and old rootReducer - // will receive the previous state. This effectively populates - // the new state tree with any relevant data from the old one. - - dispatch({ - type: ActionTypes.REPLACE - }); - } - /** - * Interoperability point for observable/reactive libraries. - * @returns {observable} A minimal observable of state changes. - * For more information, see the observable proposal: - * https://github.com/tc39/proposal-observable - */ - - - function observable() { - var _ref; - - var outerSubscribe = subscribe; - return _ref = { - /** - * The minimal observable subscription method. - * @param {Object} observer Any object that can be used as an observer. - * The observer object should have a `next` method. - * @returns {subscription} An object with an `unsubscribe` method that can - * be used to unsubscribe the observable from the store, and prevent further - * emission of values from the observable. - */ - subscribe: function subscribe(observer) { - if (typeof observer !== 'object' || observer === null) { - throw new TypeError('Expected the observer to be an object.'); - } - - function observeState() { - if (observer.next) { - observer.next(getState()); - } - } - - observeState(); - var unsubscribe = outerSubscribe(observeState); - return { - unsubscribe: unsubscribe - }; - } - }, _ref[result] = function () { - return this; - }, _ref; - } // When a store is created, an "INIT" action is dispatched so that every - // reducer returns their initial state. This effectively populates - // the initial state tree. - - - dispatch({ - type: ActionTypes.INIT - }); - return _ref2 = { - dispatch: dispatch, - subscribe: subscribe, - getState: getState, - replaceReducer: replaceReducer - }, _ref2[result] = observable, _ref2; -} - -/** - * Prints a warning in the console if it exists. - * - * @param {String} message The warning message. - * @returns {void} - */ -function warning(message) { - /* eslint-disable no-console */ - if (typeof console !== 'undefined' && typeof console.error === 'function') { - console.error(message); - } - /* eslint-enable no-console */ - - - try { - // This error was thrown as a convenience so that if you enable - // "break on all exceptions" in your console, - // it would pause the execution at this line. - throw new Error(message); - } catch (e) {} // eslint-disable-line no-empty - -} - -function _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; -} - -function ownKeys$1(object, enumerableOnly) { - var keys = Object.keys(object); - - if (Object.getOwnPropertySymbols) { - keys.push.apply(keys, Object.getOwnPropertySymbols(object)); - } - - if (enumerableOnly) keys = keys.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - return keys; -} - -function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - - if (i % 2) { - ownKeys$1(source, true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys$1(source).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - - return target; -} - -/** - * Composes single-argument functions from right to left. The rightmost - * function can take multiple arguments as it provides the signature for - * the resulting composite function. - * - * @param {...Function} funcs The functions to compose. - * @returns {Function} A function obtained by composing the argument functions - * from right to left. For example, compose(f, g, h) is identical to doing - * (...args) => f(g(h(...args))). - */ -function compose() { - for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) { - funcs[_key] = arguments[_key]; - } - - if (funcs.length === 0) { - return function (arg) { - return arg; - }; - } - - if (funcs.length === 1) { - return funcs[0]; - } - - return funcs.reduce(function (a, b) { - return function () { - return a(b.apply(void 0, arguments)); - }; - }); -} - -/** - * Creates a store enhancer that applies middleware to the dispatch method - * of the Redux store. This is handy for a variety of tasks, such as expressing - * asynchronous actions in a concise manner, or logging every action payload. - * - * See `redux-thunk` package as an example of the Redux middleware. - * - * Because middleware is potentially asynchronous, this should be the first - * store enhancer in the composition chain. - * - * Note that each middleware will be given the `dispatch` and `getState` functions - * as named arguments. - * - * @param {...Function} middlewares The middleware chain to be applied. - * @returns {Function} A store enhancer applying the middleware. - */ - -function applyMiddleware() { - for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) { - middlewares[_key] = arguments[_key]; - } - - return function (createStore) { - return function () { - var store = createStore.apply(void 0, arguments); - - var _dispatch = function dispatch() { - throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.'); - }; - - var middlewareAPI = { - getState: store.getState, - dispatch: function dispatch() { - return _dispatch.apply(void 0, arguments); - } - }; - var chain = middlewares.map(function (middleware) { - return middleware(middlewareAPI); - }); - _dispatch = compose.apply(void 0, chain)(store.dispatch); - return _objectSpread2({}, store, { - dispatch: _dispatch - }); - }; - }; -} - -/* - * This is a dummy function to check if the function name has been altered by minification. - * If the function has been minified and NODE_ENV !== 'production', warn the user. - */ - -function isCrushed() {} - -if ( typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') { - 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.'); -} - -function createThunkMiddleware(extraArgument) { - return function (_ref) { - var dispatch = _ref.dispatch, - getState = _ref.getState; - return function (next) { - return function (action) { - if (typeof action === 'function') { - return action(dispatch, getState, extraArgument); - } - - return next(action); - }; - }; - }; -} - -var thunk = createThunkMiddleware(); -thunk.withExtraArgument = createThunkMiddleware; - -function Similar() { - this.list = []; - this.lastItem = undefined; - this.size = 0; - - return this; -} - -Similar.prototype.get = function(key) { - var index; - - if (this.lastItem && this.isEqual(this.lastItem.key, key)) { - return this.lastItem.val; - } - - index = this.indexOf(key); - if (index >= 0) { - this.lastItem = this.list[index]; - return this.list[index].val; - } - - return undefined; -}; - -Similar.prototype.set = function(key, val) { - var index; - - if (this.lastItem && this.isEqual(this.lastItem.key, key)) { - this.lastItem.val = val; - return this; - } - - index = this.indexOf(key); - if (index >= 0) { - this.lastItem = this.list[index]; - this.list[index].val = val; - return this; - } - - this.lastItem = { key: key, val: val }; - this.list.push(this.lastItem); - this.size++; - - return this; -}; - -Similar.prototype.delete = function(key) { - var index; - - if (this.lastItem && this.isEqual(this.lastItem.key, key)) { - this.lastItem = undefined; - } - - index = this.indexOf(key); - if (index >= 0) { - this.size--; - return this.list.splice(index, 1)[0]; - } - - return undefined; -}; - - -// important that has() doesn't use get() in case an existing key has a falsy value, in which case has() would return false -Similar.prototype.has = function(key) { - var index; - - if (this.lastItem && this.isEqual(this.lastItem.key, key)) { - return true; - } - - index = this.indexOf(key); - if (index >= 0) { - this.lastItem = this.list[index]; - return true; - } - - return false; -}; - -Similar.prototype.forEach = function(callback, thisArg) { - var i; - for (i = 0; i < this.size; i++) { - callback.call(thisArg || this, this.list[i].val, this.list[i].key, this); - } -}; - -Similar.prototype.indexOf = function(key) { - var i; - for (i = 0; i < this.size; i++) { - if (this.isEqual(this.list[i].key, key)) { - return i; - } - } - return -1; -}; - -// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers) -Similar.prototype.isEqual = function(val1, val2) { - return val1 === val2 || (val1 !== val1 && val2 !== val2); -}; - -var similar = Similar; - -var mapOrSimilar = function(forceSimilar) { - if (typeof Map !== 'function' || forceSimilar) { - var Similar = similar; - return new Similar(); - } - else { - return new Map(); - } -}; - -var memoizerific = function (limit) { - var cache = new mapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true'), - lru = []; - - return function (fn) { - var memoizerific = function () { - var currentCache = cache, - newMap, - fnResult, - argsLengthMinusOne = arguments.length - 1, - lruPath = Array(argsLengthMinusOne + 1), - isMemoized = true, - i; - - if ((memoizerific.numArgs || memoizerific.numArgs === 0) && memoizerific.numArgs !== argsLengthMinusOne + 1) { - throw new Error('Memoizerific functions should always be called with the same number of arguments'); - } - - // loop through each argument to traverse the map tree - for (i = 0; i < argsLengthMinusOne; i++) { - lruPath[i] = { - cacheItem: currentCache, - arg: arguments[i] - }; - - // climb through the hierarchical map tree until the second-last argument has been found, or an argument is missing. - // if all arguments up to the second-last have been found, this will potentially be a cache hit (determined later) - if (currentCache.has(arguments[i])) { - currentCache = currentCache.get(arguments[i]); - continue; - } - - isMemoized = false; - - // make maps until last value - newMap = new mapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true'); - currentCache.set(arguments[i], newMap); - currentCache = newMap; - } - - // we are at the last arg, check if it is really memoized - if (isMemoized) { - if (currentCache.has(arguments[argsLengthMinusOne])) { - fnResult = currentCache.get(arguments[argsLengthMinusOne]); - } - else { - isMemoized = false; - } - } - - // if the result wasn't memoized, compute it and cache it - if (!isMemoized) { - fnResult = fn.apply(null, arguments); - currentCache.set(arguments[argsLengthMinusOne], fnResult); - } - - // if there is a cache limit, purge any extra results - if (limit > 0) { - lruPath[argsLengthMinusOne] = { - cacheItem: currentCache, - arg: arguments[argsLengthMinusOne] - }; - - if (isMemoized) { - moveToMostRecentLru(lru, lruPath); - } - else { - lru.push(lruPath); - } - - if (lru.length > limit) { - removeCachedResult(lru.shift()); - } - } - - memoizerific.wasMemoized = isMemoized; - memoizerific.numArgs = argsLengthMinusOne + 1; - - return fnResult; - }; - - memoizerific.limit = limit; - memoizerific.wasMemoized = false; - memoizerific.cache = cache; - memoizerific.lru = lru; - - return memoizerific; - }; -}; - -// move current args to most recent position -function moveToMostRecentLru(lru, lruPath) { - var lruLen = lru.length, - lruPathLen = lruPath.length, - isMatch, - i, ii; - - for (i = 0; i < lruLen; i++) { - isMatch = true; - for (ii = 0; ii < lruPathLen; ii++) { - if (!isEqual(lru[i][ii].arg, lruPath[ii].arg)) { - isMatch = false; - break; - } - } - if (isMatch) { - break; - } - } - - lru.push(lru.splice(i, 1)[0]); -} - -// remove least recently used cache item and all dead branches -function removeCachedResult(removedLru) { - var removedLruLen = removedLru.length, - currentLru = removedLru[removedLruLen - 1], - tmp, - i; - - currentLru.cacheItem.delete(currentLru.arg); - - // walk down the tree removing dead branches (size 0) along the way - for (i = removedLruLen - 2; i >= 0; i--) { - currentLru = removedLru[i]; - tmp = currentLru.cacheItem.get(currentLru.arg); - - if (!tmp || !tmp.size) { - currentLru.cacheItem.delete(currentLru.arg); - } else { - break; - } - } -} - -// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers) -function isEqual(val1, val2) { - return val1 === val2 || (val1 !== val1 && val2 !== val2); -} - -/*! - * isobject - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -function isObject(val) { - return val != null && typeof val === 'object' && Array.isArray(val) === false; -} - -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -function isObjectObject(o) { - return isObject(o) === true - && Object.prototype.toString.call(o) === '[object Object]'; -} - -function isPlainObject$1(o) { - var ctor,prot; - - if (isObjectObject(o) === false) return false; - - // If has modified constructor - ctor = o.constructor; - if (typeof ctor !== 'function') return false; - - // If has modified prototype - prot = ctor.prototype; - if (isObjectObject(prot) === false) return false; - - // If constructor does not have an Object-specific method - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; - } - - // Most likely a plain Object - return true; -} - -/** - * Returns a function, that, as long as it continues to be invoked, will not - * be triggered. The function will be called after it stops being called for - * N milliseconds. If `immediate` is passed, trigger the function on the - * leading edge, instead of the trailing. The function also has a property 'clear' - * that is a function which will clear the timer to prevent previously scheduled executions. - * - * @source underscore.js - * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/ - * @param {Function} function to wrap - * @param {Number} timeout in ms (`100`) - * @param {Boolean} whether to execute at the beginning (`false`) - * @api public - */ -function debounce(func, wait, immediate){ - var timeout, args, context, timestamp, result; - if (null == wait) wait = 100; - - function later() { - var last = Date.now() - timestamp; - - if (last < wait && last >= 0) { - timeout = setTimeout(later, wait - last); - } else { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - context = args = null; - } - } - } - var debounced = function(){ - context = this; - args = arguments; - timestamp = Date.now(); - var callNow = immediate && !timeout; - if (!timeout) timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - context = args = null; - } - - return result; - }; - - debounced.clear = function() { - if (timeout) { - clearTimeout(timeout); - timeout = null; - } - }; - - debounced.flush = function() { - if (timeout) { - result = func.apply(context, args); - context = args = null; - - clearTimeout(timeout); - timeout = null; - } - }; - - return debounced; -} -// Adds compatibility for ES modules -debounce.debounce = debounce; - -var debounce_1 = debounce; - -var StoreContext = createContext(); - -// To get around it, we can conditionally useEffect on the server (no-op) and -// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store -// subscription callback always has the selector from the latest render commit -// available, otherwise a store update may happen between render and the effect, -// which may cause missed updates; we also must ensure the store subscription -// is created synchronously, otherwise a store update may occur before the -// subscription is created and an inconsistent state may be observed - -var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect; -function createStoreStateHook(Context) { - return function useStoreState(mapState, equalityFn) { - var store = useContext(Context); - var mapStateRef = useRef(mapState); - var stateRef = useRef(); - var mountedRef = useRef(true); - var subscriptionMapStateError = useRef(); - - var _useReducer = useReducer(function (s) { - return s + 1; - }, 0), - forceRender = _useReducer[1]; - - if (subscriptionMapStateError.current || mapStateRef.current !== mapState || stateRef.current === undefined) { - try { - stateRef.current = mapState(store.getState()); - } catch (err) { - { - var errorMessage = "An error occurred trying to map state in a useStoreState hook: " + err.message + "."; - - if (subscriptionMapStateError.current) { - errorMessage += "\nThis error may be related to the following error:\n" + subscriptionMapStateError.current.stack + "\n\nOriginal stack trace:"; - } - - throw new Error(errorMessage); - } - } - } - - useIsomorphicLayoutEffect(function () { - mapStateRef.current = mapState; - subscriptionMapStateError.current = undefined; - }); - useIsomorphicLayoutEffect(function () { - var checkMapState = function checkMapState() { - try { - var newState = mapStateRef.current(store.getState()); - var isStateEqual = typeof equalityFn === 'function' ? equalityFn(stateRef.current, newState) : stateRef.current === newState; - - if (isStateEqual) { - return; - } - - stateRef.current = newState; - } catch (err) { - // see https://github.com/reduxjs/react-redux/issues/1179 - // There is a possibility mapState will fail due to stale state or - // props, therefore we will just track the error and force our - // component to update. It should then receive the updated state - subscriptionMapStateError.current = err; - } - - if (mountedRef.current) { - forceRender({}); - } - }; - - var unsubscribe = store.subscribe(checkMapState); - checkMapState(); - return function () { - mountedRef.current = false; - unsubscribe(); - }; - }, []); - return stateRef.current; - }; -} -var useStoreState = createStoreStateHook(StoreContext); -function createStoreActionsHook(Context) { - return function useStoreActions(mapActions) { - var store = useContext(Context); - return mapActions(store.getActions()); - }; -} -var useStoreActions = createStoreActionsHook(StoreContext); -function createStoreDispatchHook(Context) { - return function useStoreDispatch() { - var store = useContext(Context); - return store.dispatch; - }; -} -var useStoreDispatch = createStoreDispatchHook(StoreContext); -function useStore() { - return useContext(StoreContext); -} -function createStoreRehydratedHook(Context) { - return function useStoreRehydrated() { - var store = useContext(Context); - - var _useState = useState(false), - rehydrated = _useState[0], - setRehydrated = _useState[1]; - - useEffect(function () { - store.persist.resolveRehydration().then(function () { - return setRehydrated(true); - }); - }, []); - return rehydrated; - }; -} -var useStoreRehydrated = createStoreRehydratedHook(StoreContext); -function createTypedHooks() { - return { - useStoreActions: useStoreActions, - useStoreDispatch: useStoreDispatch, - useStoreState: useStoreState, - useStoreRehydrated: useStoreRehydrated, - useStore: useStore - }; -} - -function _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); -} - -var actionSymbol = 'a'; -var actionOnSymbol = 'aO'; -var computedSymbol = 'c'; -var persistSymbol = 'p'; -var reducerSymbol = 'r'; -var thunkOnSymbol = 'tO'; -var thunkSymbol = 't'; -var action = function action(fn) { - fn[actionSymbol] = {}; - return fn; -}; - -var deepCloneStateWithoutComputed = function deepCloneStateWithoutComputed(source) { - var recursiveClone = function recursiveClone(current) { - var next = Object.keys(current).reduce(function (acc, key) { - if (Object.getOwnPropertyDescriptor(current, key).get == null) { - acc[key] = current[key]; - } - - return acc; - }, {}); - Object.keys(next).forEach(function (key) { - if (isPlainObject$1(next[key])) { - next[key] = recursiveClone(next[key]); - } - }); - return next; - }; - - return recursiveClone(source); -}; -var isPromise = function isPromise(x) { - return x != null && typeof x === 'object' && typeof x.then === 'function'; -}; -function get$2(path, target) { - return path.reduce(function (acc, cur) { - return isPlainObject$1(acc) ? acc[cur] : undefined; - }, target); -} -function newify(currentPath, currentState, finalValue) { - if (currentPath.length === 0) { - return finalValue; - } - - var newState = _extends({}, currentState); - - var key = currentPath[0]; - - if (currentPath.length === 1) { - newState[key] = finalValue; - } else { - newState[key] = newify(currentPath.slice(1), newState[key], finalValue); - } - - return newState; -} -var set$2 = function set(path, target, value) { - if (path.length === 0) { - if (typeof value === 'object') { - Object.keys(target).forEach(function (key) { - delete target[key]; - }); - Object.keys(value).forEach(function (key) { - target[key] = value[key]; - }); - } - - return; - } - - path.reduce(function (acc, cur, idx) { - if (idx + 1 === path.length) { - acc[cur] = value; - } else { - acc[cur] = acc[cur] || {}; - } - - return acc[cur]; - }, target); -}; -function createSimpleProduce(disableImmer) { - if (disableImmer === void 0) { - disableImmer = false; - } - - return function simpleProduce(path, state, fn) { - if (disableImmer) { - var _current = get$2(path, state); - - var next = fn(_current); - - if (_current !== next) { - return newify(path, state, next); - } - - return state; - } - - if (path.length === 0) { - var _draft = createDraft(state); - - var _result = fn(_draft); - - if (_result) { - return isDraft(_result) ? finishDraft(_result) : _result; - } - - return finishDraft(_draft); - } - - var parentPath = path.slice(0, path.length - 1); - var draft = createDraft(state); - var parent = get$2(parentPath, state); - var current = get$2(path, draft); - var result = fn(current); - - if (result) { - parent[path[path.length - 1]] = result; - } - - return finishDraft(draft); - }; -} - -function createReducer(disableImmer, actionReducersDict, customReducers, computedProperties) { - var simpleProduce = createSimpleProduce(disableImmer); - - var runActionReducerAtPath = function runActionReducerAtPath(state, action, actionReducer, path) { - return simpleProduce(path, state, function (draft) { - return actionReducer(draft, action.payload); - }); - }; - - var reducerForActions = function reducerForActions(state, action) { - var actionReducer = actionReducersDict[action.type]; - - if (actionReducer) { - var actionMeta = actionReducer[actionSymbol] || actionReducer[actionOnSymbol]; - return runActionReducerAtPath(state, action, actionReducer, actionMeta.parent); - } - - return state; - }; - - var reducerForCustomReducers = function reducerForCustomReducers(state, action) { - return customReducers.reduce(function (acc, _ref) { - var parentPath = _ref.parentPath, - key = _ref.key, - red = _ref.reducer; - return simpleProduce(parentPath, acc, function (draft) { - draft[key] = red(draft[key], action); - return draft; - }); - }, state); - }; - - var rootReducer = function rootReducer(state, action) { - var stateAfterActions = reducerForActions(state, action); - var next = customReducers.length > 0 ? reducerForCustomReducers(stateAfterActions, action) : stateAfterActions; - - if (state !== next) { - computedProperties.forEach(function (_ref2) { - var parentPath = _ref2.parentPath, - bindComputedProperty = _ref2.bindComputedProperty; - bindComputedProperty(get$2(parentPath, next)); - }); - } - - return next; - }; - - return rootReducer; -} - -var noopStorage = { - getItem: function getItem() { - return undefined; - }, - setItem: function setItem() { - return undefined; - }, - removeItem: function removeItem() { - return undefined; - } -}; -var localStorage = typeof window !== 'undefined' && typeof window.localStorage !== 'undefined' ? window.localStorage : noopStorage; -var sessionStorage = typeof window !== 'undefined' && typeof window.sessionStorage !== 'undefined' ? window.sessionStorage : noopStorage; - -function createStorageWrapper(storage, transformers) { - if (storage === void 0) { - storage = sessionStorage; - } - - if (transformers === void 0) { - transformers = []; - } - - if (typeof storage === 'string') { - if (storage === 'localStorage') { - storage = localStorage; - } else if (storage === 'sessionStorage') { - storage = sessionStorage; - } else { - { - console.warn("Invalid storage provider specified for Easy Peasy persist: " + storage + "\nValid values include \"localStorage\", \"sessionStorage\" or a custom storage engine."); - } - - storage = noopStorage; - } - } - - var outTransformers = transformers.reverse(); - - var serialize = function serialize(data, key) { - var simpleKey = key.substr(key.indexOf('@') + 1); - var transformed = transformers.reduce(function (acc, cur) { - return cur.in(acc, simpleKey); - }, data); - return storage === localStorage || storage === sessionStorage ? JSON.stringify({ - data: transformed - }) : transformed; - }; - - var deserialize = function deserialize(data, key) { - var simpleKey = key.substr(key.indexOf('@') + 1); - var result = storage === localStorage || storage === sessionStorage ? JSON.parse(data).data : data; - return outTransformers.reduce(function (acc, cur) { - return cur.out(acc, simpleKey); - }, result); - }; - - var isAsync = isPromise(storage.getItem('_')); - return { - isAsync: isAsync, - getItem: function getItem(key) { - if (isAsync) { - return storage.getItem(key).then(function (wrapped) { - return wrapped != null ? deserialize(wrapped, key) : undefined; - }); - } - - var wrapped = storage.getItem(key); - return wrapped != null ? deserialize(wrapped, key) : undefined; - }, - setItem: function setItem(key, data) { - return storage.setItem(key, serialize(data, key)); - }, - removeItem: function removeItem(key) { - return storage.removeItem(key); - } - }; -} - -function extractPersistConfig(path, persistDefinition) { - if (persistDefinition === void 0) { - persistDefinition = {}; - } - - return { - path: path, - config: { - blacklist: persistDefinition.blacklist || [], - mergeStrategy: persistDefinition.mergeStrategy || 'merge', - storage: createStorageWrapper(persistDefinition.storage, persistDefinition.transformers), - whitelist: persistDefinition.whitelist || [] - } - }; -} - -function resolvePersistTargets(target, whitelist, blacklist) { - var targets = Object.keys(target); - - if (whitelist.length > 0) { - targets = targets.reduce(function (acc, cur) { - if (whitelist.findIndex(function (x) { - return x === cur; - }) !== -1) { - return [].concat(acc, [cur]); - } - - return acc; - }, []); - } - - if (blacklist.length > 0) { - targets = targets.reduce(function (acc, cur) { - if (blacklist.findIndex(function (x) { - return x === cur; - }) !== -1) { - return acc; - } - - return [].concat(acc, [cur]); - }, []); - } - - return targets; -} - -function createPersistor(persistKey, references) { - return debounce_1(function () { - references.internals.persistenceConfig.forEach(function (_ref) { - var path = _ref.path, - config = _ref.config; - var storage = config.storage, - whitelist = config.whitelist, - blacklist = config.blacklist; - var state = references.getState(); - var persistRoot = deepCloneStateWithoutComputed(get$2(path, state)); - var targets = resolvePersistTargets(persistRoot, whitelist, blacklist); - targets.forEach(function (key) { - var targetPath = [].concat(path, [key]); - storage.setItem(persistKey(targetPath), get$2(targetPath, state)); - }); - }); - }, 1000); -} -function createPersistMiddleware(persistor, references) { - return function () { - return function (next) { - return function (action) { - var state = next(action); - - if (action && action.type !== '@action.ePRS' && references.internals.persistenceConfig.length > 0) { - persistor(state); - } - - return state; - }; - }; - }; -} -function createPersistenceClearer(persistKey, references) { - return function () { - return new Promise(function (resolve, reject) { - references.internals.persistenceConfig.forEach(function (_ref2) { - var path = _ref2.path, - config = _ref2.config; - var storage = config.storage, - whitelist = config.whitelist, - blacklist = config.blacklist; - var persistRoot = get$2(path, references.getState()); - var targets = resolvePersistTargets(persistRoot, whitelist, blacklist); - - if (targets.length > 0) { - Promise.all(targets.map(function (key) { - var targetPath = [].concat(path, [key]); - return storage.removeItem(persistKey(targetPath)); - })).then(function () { - return resolve(); - }, reject); - } else { - resolve(); - } - }); - }); - }; -} -function rehydrateStateFromPersistIfNeeded(persistKey, replaceState, references) { - // If we have any persist configs we will attemp to perform a state rehydration - var resolveRehydration = Promise.resolve(); - - if (references.internals.persistenceConfig.length > 0) { - references.internals.persistenceConfig.forEach(function (persistInstance) { - var path = persistInstance.path, - config = persistInstance.config; - var blacklist = config.blacklist, - mergeStrategy = config.mergeStrategy, - storage = config.storage, - whitelist = config.whitelist; - var state = references.internals.defaultState; - var persistRoot = deepCloneStateWithoutComputed(get$2(path, state)); - var targets = resolvePersistTargets(persistRoot, whitelist, blacklist); - - var applyRehydrationStrategy = function applyRehydrationStrategy(originalState, rehydratedState) { - if (mergeStrategy === 'overwrite') { - set$2(path, originalState, rehydratedState); - } else if (mergeStrategy === 'merge') { - var target = get$2(path, originalState); - Object.keys(rehydratedState).forEach(function (key) { - target[key] = rehydratedState[key]; - }); - } else if (mergeStrategy === 'mergeDeep') { - var _target = get$2(path, originalState); - - var setAt = function setAt(currentTarget, currentNext) { - Object.keys(currentNext).forEach(function (key) { - var data = currentNext[key]; - - if (isPlainObject$1(data)) { - if (!isPlainObject$1(currentTarget[key])) { - currentTarget[key] = {}; - } - - setAt(currentTarget[key], data); - } else { - currentTarget[key] = data; - } - }); - }; - - setAt(_target, rehydratedState); - } - }; - - if (storage.isAsync) { - var asyncStateResolvers = targets.reduce(function (acc, key) { - var targetPath = [].concat(path, [key]); - var dataPromise = storage.getItem(persistKey(targetPath)); - - if (isPromise(dataPromise)) { - acc.push({ - key: key, - dataPromise: dataPromise - }); - } - - return acc; - }, []); - - if (asyncStateResolvers.length > 0) { - resolveRehydration = Promise.all(asyncStateResolvers.map(function (x) { - return x.dataPromise; - })).then(function (resolvedData) { - var next = resolvedData.reduce(function (acc, cur, idx) { - var key = asyncStateResolvers[idx].key; - - if (cur !== undefined) { - acc[key] = cur; - } - - return acc; - }, {}); - - if (Object.keys(next).length === 0) { - return; - } - - applyRehydrationStrategy(state, next); - replaceState(state); - }); - } - } else { - var next = targets.reduce(function (acc, key) { - var targetPath = [].concat(path, [key]); - var data = storage.getItem(persistKey(targetPath)); - - if (data !== undefined) { - acc[key] = data; - } - - return acc; - }, {}); - applyRehydrationStrategy(state, next); - replaceState(state); - } - }); - } - - return resolveRehydration; -} - -function createActionCreator(actionDefinition, meta, references) { - var prefix = actionDefinition[actionSymbol] ? '@action' : '@actionOn'; - var type = prefix + "." + meta.path.join('.'); - var actionMeta = actionDefinition[actionSymbol] || actionDefinition[actionOnSymbol]; - actionMeta.actionName = meta.key; - actionMeta.type = type; - actionMeta.parent = meta.parent; - actionMeta.path = meta.path; - - var actionCreator = function actionCreator(payload) { - var action = { - type: type, - payload: payload - }; - - if (actionDefinition[actionOnSymbol] && actionMeta.resolvedTargets) { - payload.resolvedTargets = [].concat(actionMeta.resolvedTargets); - } - - var result = references.dispatch(action); - return result; - }; - - actionCreator.type = type; - return actionCreator; -} - -function createThunkHandler(thunkDefinition, meta, references, injections, actionCreators) { - var thunkMeta = thunkDefinition[thunkSymbol] || thunkDefinition[thunkOnSymbol]; - return function (payload) { - var helpers = { - dispatch: references.dispatch, - getState: function getState() { - return get$2(meta.parent, references.getState()); - }, - getStoreActions: function getStoreActions() { - return actionCreators; - }, - getStoreState: references.getState, - injections: injections, - meta: meta - }; - - if (thunkDefinition[thunkOnSymbol] && thunkMeta.resolvedTargets) { - payload.resolvedTargets = [].concat(thunkMeta.resolvedTargets); - } - - return thunkDefinition(get$2(meta.parent, actionCreators), payload, helpers); - }; -} -function createThunkActionsCreator(thunkDefinition, meta, references, thunkHandler) { - var prefix = thunkDefinition[thunkSymbol] ? '@thunk' : '@thunkOn'; - var type = prefix + "." + meta.path.join('.'); - var startType = type + "(start)"; - var successType = type + "(success)"; - var failType = type + "(fail)"; - var thunkMeta = thunkDefinition[thunkSymbol] || thunkDefinition[thunkOnSymbol]; - thunkMeta.type = type; - thunkMeta.actionName = meta.key; - thunkMeta.parent = meta.parent; - thunkMeta.path = meta.path; - - var actionCreator = function actionCreator(payload) { - var dispatchError = function dispatchError(err) { - references.dispatch({ - type: failType, - payload: payload, - error: err - }); - references.dispatch({ - type: type, - payload: payload, - error: err - }); - }; - - var dispatchSuccess = function dispatchSuccess(result) { - references.dispatch({ - type: successType, - payload: payload, - result: result - }); - references.dispatch({ - type: type, - payload: payload, - result: result - }); - }; - - references.dispatch({ - type: startType, - payload: payload - }); - - try { - var result = references.dispatch(function () { - return thunkHandler(payload); - }); - - if (isPromise(result)) { - return result.then(function (resolved) { - dispatchSuccess(resolved); - return resolved; - }).catch(function (err) { - dispatchError(err); - throw err; - }); - } - - dispatchSuccess(result); - return result; - } catch (err) { - dispatchError(err); - throw err; - } - }; - - actionCreator.type = type; - actionCreator.startType = startType; - actionCreator.successType = successType; - actionCreator.failType = failType; - return actionCreator; -} - -function createListenerMiddleware(references) { - return function () { - return function (next) { - return function (action) { - var result = next(action); - - if (action && references.internals.listenerActionMap[action.type] && references.internals.listenerActionMap[action.type].length > 0) { - var sourceAction = references.internals.actionCreatorDict[action.type]; - references.internals.listenerActionMap[action.type].forEach(function (actionCreator) { - actionCreator({ - type: sourceAction ? sourceAction.type : action.type, - payload: action.payload, - error: action.error, - result: action.result - }); - }); - } - - return result; - }; - }; - }; -} -function bindListenerDefinitions(listenerDefinitions, actionCreators, actionCreatorDict, listenerActionMap) { - listenerDefinitions.forEach(function (listenerActionOrThunk) { - var listenerMeta = listenerActionOrThunk[actionOnSymbol] || listenerActionOrThunk[thunkOnSymbol]; - var targets = listenerMeta.targetResolver(get$2(listenerMeta.parent, actionCreators), actionCreators); - var targetTypes = (Array.isArray(targets) ? targets : [targets]).reduce(function (acc, target) { - if (typeof target === 'function' && target.type && actionCreatorDict[target.type]) { - acc.push(target.type); - } else if (typeof target === 'string') { - acc.push(target); - } - - return acc; - }, []); - listenerMeta.resolvedTargets = targetTypes; - targetTypes.forEach(function (targetType) { - var listenerReg = listenerActionMap[targetType] || []; - listenerReg.push(actionCreatorDict[listenerMeta.type]); - listenerActionMap[targetType] = listenerReg; - }); - }); -} - -function createComputedPropertyBinder(parentPath, key, definition, computedState, references) { - var computedMeta = definition[computedSymbol]; - var memoisedResultFn = memoizerific(1)(definition); - return function createComputedProperty(o) { - Object.defineProperty(o, key, { - configurable: true, - enumerable: true, - get: function get$1() { - var storeState; - - if (computedState.isInReducer) { - storeState = computedState.currentState; - } else if (references.getState == null) { - return undefined; - } else { - try { - storeState = references.getState(); - } catch (err) { - { - console.warn('Invalid access attempt to a computed property'); - } - - return undefined; - } - } - - var state = get$2(parentPath, storeState); - - var inputs = computedMeta.stateResolvers.map(function (resolver) { - return resolver(state, storeState); - }); - return memoisedResultFn.apply(void 0, inputs); - } - }); - }; -} -function createComputedPropertiesMiddleware(references) { - return function (store) { - return function (next) { - return function (action) { - references.internals.computedState.currentState = store.getState(); - references.internals.computedState.isInReducer = true; - return next(action); - }; - }; - }; -} - -function extractDataFromModel(model, initialState, injections, references) { - var defaultState = initialState; - var actionCreatorDict = {}; - var actionCreators = {}; - var actionReducersDict = {}; - var actionThunks = {}; - var computedProperties = []; - var customReducers = []; - var listenerActionCreators = {}; - var listenerActionMap = {}; - var listenerDefinitions = []; - var persistenceConfig = []; - var computedState = { - isInReducer: false, - currentState: defaultState - }; - - var recursiveExtractFromModel = function recursiveExtractFromModel(current, parentPath) { - return Object.keys(current).forEach(function (key) { - var value = current[key]; - var path = [].concat(parentPath, [key]); - var meta = { - parent: parentPath, - path: path, - key: key - }; - - var handleValueAsState = function handleValueAsState() { - var initialParentRef = get$2(parentPath, initialState); - - if (initialParentRef && key in initialParentRef) { - set$2(path, defaultState, initialParentRef[key]); - } else { - set$2(path, defaultState, value); - } - }; - - if (key === persistSymbol) { - persistenceConfig.push(extractPersistConfig(parentPath, value)); - return; - } - - if (typeof value === 'function') { - if (value[actionSymbol] || value[actionOnSymbol]) { - var actionReducer = value; - var actionCreator = createActionCreator(value, meta, references); - actionCreatorDict[actionCreator.type] = actionCreator; - actionReducersDict[actionCreator.type] = actionReducer; - - if (meta.key !== 'ePRS') { - if (value[actionOnSymbol]) { - listenerDefinitions.push(value); - set$2(path, listenerActionCreators, actionCreator); - } else { - set$2(path, actionCreators, actionCreator); - } - } - } else if (value[thunkSymbol] || value[thunkOnSymbol]) { - var thunkHandler = createThunkHandler(value, meta, references, injections, actionCreators); - - var _actionCreator = createThunkActionsCreator(value, meta, references, thunkHandler); - - set$2(path, actionThunks, thunkHandler); - actionCreatorDict[_actionCreator.type] = _actionCreator; - - if (value[thunkOnSymbol]) { - listenerDefinitions.push(value); - set$2(path, listenerActionCreators, _actionCreator); - } else { - set$2(path, actionCreators, _actionCreator); - } - } else if (value[computedSymbol]) { - var parent = get$2(parentPath, defaultState); - var bindComputedProperty = createComputedPropertyBinder(parentPath, key, value, computedState, references); - bindComputedProperty(parent); - computedProperties.push({ - key: key, - parentPath: parentPath, - bindComputedProperty: bindComputedProperty - }); - } else if (value[reducerSymbol]) { - customReducers.push({ - key: key, - parentPath: parentPath, - reducer: value - }); - } else { - handleValueAsState(); - } - } else if (isPlainObject$1(value)) { - var existing = get$2(path, defaultState); - - if (existing == null) { - set$2(path, defaultState, {}); - } - - recursiveExtractFromModel(value, path); - } else { - handleValueAsState(); - } - }); - }; - - recursiveExtractFromModel(model, []); - bindListenerDefinitions(listenerDefinitions, actionCreators, actionCreatorDict, listenerActionMap); - return { - actionCreatorDict: actionCreatorDict, - actionCreators: actionCreators, - actionReducersDict: actionReducersDict, - computedProperties: computedProperties, - customReducers: customReducers, - computedState: computedState, - defaultState: defaultState, - listenerActionCreators: listenerActionCreators, - listenerActionMap: listenerActionMap, - persistenceConfig: persistenceConfig - }; -} - -function createStoreInternals(_ref) { - var disableImmer = _ref.disableImmer, - initialState = _ref.initialState, - injections = _ref.injections, - model = _ref.model, - reducerEnhancer = _ref.reducerEnhancer, - references = _ref.references; - - var _extractDataFromModel = extractDataFromModel(model, initialState, injections, references), - actionCreatorDict = _extractDataFromModel.actionCreatorDict, - actionCreators = _extractDataFromModel.actionCreators, - actionReducersDict = _extractDataFromModel.actionReducersDict, - computedState = _extractDataFromModel.computedState, - computedProperties = _extractDataFromModel.computedProperties, - customReducers = _extractDataFromModel.customReducers, - defaultState = _extractDataFromModel.defaultState, - listenerActionCreators = _extractDataFromModel.listenerActionCreators, - listenerActionMap = _extractDataFromModel.listenerActionMap, - persistenceConfig = _extractDataFromModel.persistenceConfig; - - var rootReducer = createReducer(disableImmer, actionReducersDict, customReducers, computedProperties); - return { - actionCreatorDict: actionCreatorDict, - actionCreators: actionCreators, - computedProperties: computedProperties, - computedState: computedState, - defaultState: defaultState, - listenerActionCreators: listenerActionCreators, - listenerActionMap: listenerActionMap, - persistenceConfig: persistenceConfig, - reducer: reducerEnhancer(rootReducer) - }; -} - -function createStore$1(model, options) { - if (options === void 0) { - options = {}; - } - - var modelClone = deepCloneStateWithoutComputed(model); - var _options = options, - compose$1 = _options.compose, - _options$devTools = _options.devTools, - devTools = _options$devTools === void 0 ? true : _options$devTools, - _options$disableImmer = _options.disableImmer, - disableImmer = _options$disableImmer === void 0 ? false : _options$disableImmer, - _options$enhancers = _options.enhancers, - enhancers = _options$enhancers === void 0 ? [] : _options$enhancers, - _options$initialState = _options.initialState, - initialState = _options$initialState === void 0 ? {} : _options$initialState, - injections = _options.injections, - _options$middleware = _options.middleware, - middleware = _options$middleware === void 0 ? [] : _options$middleware, - _options$mockActions = _options.mockActions, - mockActions = _options$mockActions === void 0 ? false : _options$mockActions, - _options$name = _options.name, - storeName = _options$name === void 0 ? "EasyPeasyStore" : _options$name, - _options$reducerEnhan = _options.reducerEnhancer, - reducerEnhancer = _options$reducerEnhan === void 0 ? function (rootReducer) { - return rootReducer; - } : _options$reducerEnhan; - - var bindReplaceState = function bindReplaceState(modelDef) { - return _extends({}, modelDef, { - ePRS: action(function (_, payload) { - return payload; - }) - }); - }; - - var references = {}; - var modelDefinition = bindReplaceState(modelClone); - var mockedActions = []; - - var persistKey = function persistKey(targetPath) { - return "[" + storeName + "]@" + targetPath.join('.'); - }; - - var persistor = createPersistor(persistKey, references); - var persistMiddleware = createPersistMiddleware(persistor, references); - var clearPersistance = createPersistenceClearer(persistKey, references); - - var replaceState = function replaceState(nextState) { - return references.internals.actionCreatorDict['@action.ePRS'](nextState); - }; - - var bindStoreInternals = function bindStoreInternals(state) { - if (state === void 0) { - state = {}; - } - - references.internals = createStoreInternals({ - disableImmer: disableImmer, - initialState: state, - injections: injections, - model: modelDefinition, - reducerEnhancer: reducerEnhancer, - references: references - }); - }; - - var mockActionsMiddleware = function mockActionsMiddleware() { - return function () { - return function (action) { - if (action != null) { - mockedActions.push(action); - } - - return undefined; - }; - }; - }; - - var composeEnhancers = compose$1 || (devTools && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ - name: storeName - }) : compose); - bindStoreInternals(initialState); - var easyPeasyMiddleware = [createComputedPropertiesMiddleware(references), thunk].concat(middleware, [createListenerMiddleware(references), persistMiddleware]); - - if (mockActions) { - easyPeasyMiddleware.push(mockActionsMiddleware); - } - - var store = createStore(references.internals.reducer, references.internals.defaultState, composeEnhancers.apply(void 0, [applyMiddleware.apply(void 0, easyPeasyMiddleware)].concat(enhancers))); - store.subscribe(function () { - references.internals.computedState.isInReducer = false; - }); - references.dispatch = store.dispatch; - references.getState = store.getState; - - var bindActionCreators = function bindActionCreators() { - Object.keys(store.dispatch).forEach(function (actionsKey) { - delete store.dispatch[actionsKey]; - }); - Object.keys(references.internals.actionCreators).forEach(function (key) { - store.dispatch[key] = references.internals.actionCreators[key]; - }); - }; - - bindActionCreators(); - - var rebindStore = function rebindStore(removeKey) { - var currentState = store.getState(); - - if (removeKey) { - delete currentState[removeKey]; - } - - bindStoreInternals(currentState); - store.replaceReducer(references.internals.reducer); - replaceState(references.internals.defaultState); - bindActionCreators(); - }; - - var _resolveRehydration = rehydrateStateFromPersistIfNeeded(persistKey, replaceState, references); - - return Object.assign(store, { - addModel: function addModel(key, modelForKey) { - if (modelDefinition[key] && "development" !== 'production') { - // eslint-disable-next-line no-console - console.warn("easy-peasy: The store model already contains a model definition for \"" + key + "\""); - store.removeModel(key); - } - - modelDefinition[key] = modelForKey; - rebindStore(); - }, - clearMockedActions: function clearMockedActions() { - mockedActions = []; - }, - getActions: function getActions() { - return references.internals.actionCreators; - }, - getListeners: function getListeners() { - return references.internals.listenerActionCreators; - }, - getMockedActions: function getMockedActions() { - return [].concat(mockedActions); - }, - persist: { - clear: clearPersistance, - flush: function flush() { - return persistor.flush(); - }, - resolveRehydration: function resolveRehydration() { - return _resolveRehydration; - } - }, - reconfigure: function reconfigure(newModel) { - modelDefinition = bindReplaceState(newModel); - rebindStore(); - }, - removeModel: function removeModel(key) { - if (!modelDefinition[key]) { - { - // eslint-disable-next-line no-console - console.warn("easy-peasy: The store model does not contain a model definition for \"" + key + "\""); - } - - return; - } - - delete modelDefinition[key]; - rebindStore(key); - } - }); -} - -function StoreProvider(_ref) { - var children = _ref.children, - store = _ref.store; - return React__default.createElement(StoreContext.Provider, { - value: store - }, children); -} - -/** - * The auto freeze feature of immer doesn't seem to work in our testing. We have - * explicitly disabled it to avoid perf issues. - */ - -setAutoFreeze(false); - -function unwrapExports (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; -} - -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; -} - -var classnames = createCommonjsModule(function (module) { -/*! - Copyright (c) 2017 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/ -/* global define */ - -(function () { - - var hasOwn = {}.hasOwnProperty; - - function classNames () { - var classes = []; - - for (var i = 0; i < arguments.length; i++) { - var arg = arguments[i]; - if (!arg) continue; - - var argType = typeof arg; - - if (argType === 'string' || argType === 'number') { - classes.push(arg); - } else if (Array.isArray(arg) && arg.length) { - var inner = classNames.apply(null, arg); - if (inner) { - classes.push(inner); - } - } else if (argType === 'object') { - for (var key in arg) { - if (hasOwn.call(arg, key) && arg[key]) { - classes.push(key); - } - } - } - } - - return classes.join(' '); - } - - if ( module.exports) { - classNames.default = classNames; - module.exports = classNames; - } else { - window.classNames = classNames; - } -}()); -}); - -var typedHooks = createTypedHooks(); -var useStoreActions$1 = typedHooks.useStoreActions; -var useStoreState$1 = typedHooks.useStoreState; - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -} - -var noop = {value: function() {}}; - -function dispatch() { - for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { - if (!(t = arguments[i] + "") || (t in _)) throw new Error("illegal type: " + t); - _[t] = []; - } - return new Dispatch(_); -} - -function Dispatch(_) { - this._ = _; -} - -function parseTypenames(typenames, types) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); - return {type: t, name: name}; - }); -} - -Dispatch.prototype = dispatch.prototype = { - constructor: Dispatch, - on: function(typename, callback) { - var _ = this._, - T = parseTypenames(typename + "", _), - t, - i = -1, - n = T.length; - - // If no callback was specified, return the callback of the given type and name. - if (arguments.length < 2) { - while (++i < n) if ((t = (typename = T[i]).type) && (t = get$3(_[t], typename.name))) return t; - return; - } - - // If a type was specified, set the callback for the given type and name. - // Otherwise, if a null callback was specified, remove callbacks of the given name. - if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); - while (++i < n) { - if (t = (typename = T[i]).type) _[t] = set$3(_[t], typename.name, callback); - else if (callback == null) for (t in _) _[t] = set$3(_[t], typename.name, null); - } - - return this; - }, - copy: function() { - var copy = {}, _ = this._; - for (var t in _) copy[t] = _[t].slice(); - return new Dispatch(copy); - }, - call: function(type, that) { - if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - }, - apply: function(type, that, args) { - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - } -}; - -function get$3(type, name) { - for (var i = 0, n = type.length, c; i < n; ++i) { - if ((c = type[i]).name === name) { - return c.value; - } - } -} - -function set$3(type, name, callback) { - for (var i = 0, n = type.length; i < n; ++i) { - if (type[i].name === name) { - type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); - break; - } - } - if (callback != null) type.push({name: name, value: callback}); - return type; -} - -var xhtml = "http://www.w3.org/1999/xhtml"; - -var namespaces = { - svg: "http://www.w3.org/2000/svg", - xhtml: xhtml, - xlink: "http://www.w3.org/1999/xlink", - xml: "http://www.w3.org/XML/1998/namespace", - xmlns: "http://www.w3.org/2000/xmlns/" -}; - -function namespace(name) { - var prefix = name += "", i = prefix.indexOf(":"); - if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); - return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; -} - -function creatorInherit(name) { - return function() { - var document = this.ownerDocument, - uri = this.namespaceURI; - return uri === xhtml && document.documentElement.namespaceURI === xhtml - ? document.createElement(name) - : document.createElementNS(uri, name); - }; -} - -function creatorFixed(fullname) { - return function() { - return this.ownerDocument.createElementNS(fullname.space, fullname.local); - }; -} - -function creator(name) { - var fullname = namespace(name); - return (fullname.local - ? creatorFixed - : creatorInherit)(fullname); -} - -function none() {} - -function selector(selector) { - return selector == null ? none : function() { - return this.querySelector(selector); - }; -} - -function selection_select(select) { - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - } - } - } - - return new Selection(subgroups, this._parents); -} - -function empty() { - return []; -} - -function selectorAll(selector) { - return selector == null ? empty : function() { - return this.querySelectorAll(selector); - }; -} - -function selection_selectAll(select) { - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - subgroups.push(select.call(node, node.__data__, i, group)); - parents.push(node); - } - } - } - - return new Selection(subgroups, parents); -} - -function matcher(selector) { - return function() { - return this.matches(selector); - }; -} - -function selection_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Selection(subgroups, this._parents); -} - -function sparse(update) { - return new Array(update.length); -} - -function selection_enter() { - return new Selection(this._enter || this._groups.map(sparse), this._parents); -} - -function EnterNode(parent, datum) { - this.ownerDocument = parent.ownerDocument; - this.namespaceURI = parent.namespaceURI; - this._next = null; - this._parent = parent; - this.__data__ = datum; -} - -EnterNode.prototype = { - constructor: EnterNode, - appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, - insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, - querySelector: function(selector) { return this._parent.querySelector(selector); }, - querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } -}; - -function constant(x) { - return function() { - return x; - }; -} - -var keyPrefix = "$"; // Protect against keys like “__proto__”. - -function bindIndex(parent, group, enter, update, exit, data) { - var i = 0, - node, - groupLength = group.length, - dataLength = data.length; - - // Put any non-null nodes that fit into update. - // Put any null nodes into enter. - // Put any remaining data into enter. - for (; i < dataLength; ++i) { - if (node = group[i]) { - node.__data__ = data[i]; - update[i] = node; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Put any non-null nodes that don’t fit into exit. - for (; i < groupLength; ++i) { - if (node = group[i]) { - exit[i] = node; - } - } -} - -function bindKey(parent, group, enter, update, exit, data, key) { - var i, - node, - nodeByKeyValue = {}, - groupLength = group.length, - dataLength = data.length, - keyValues = new Array(groupLength), - keyValue; - - // Compute the key for each node. - // If multiple nodes have the same key, the duplicates are added to exit. - for (i = 0; i < groupLength; ++i) { - if (node = group[i]) { - keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group); - if (keyValue in nodeByKeyValue) { - exit[i] = node; - } else { - nodeByKeyValue[keyValue] = node; - } - } - } - - // Compute the key for each datum. - // If there a node associated with this key, join and add it to update. - // If there is not (or the key is a duplicate), add it to enter. - for (i = 0; i < dataLength; ++i) { - keyValue = keyPrefix + key.call(parent, data[i], i, data); - if (node = nodeByKeyValue[keyValue]) { - update[i] = node; - node.__data__ = data[i]; - nodeByKeyValue[keyValue] = null; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Add any remaining nodes that were not bound to data to exit. - for (i = 0; i < groupLength; ++i) { - if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) { - exit[i] = node; - } - } -} - -function selection_data(value, key) { - if (!value) { - data = new Array(this.size()), j = -1; - this.each(function(d) { data[++j] = d; }); - return data; - } - - var bind = key ? bindKey : bindIndex, - parents = this._parents, - groups = this._groups; - - if (typeof value !== "function") value = constant(value); - - for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { - var parent = parents[j], - group = groups[j], - groupLength = group.length, - data = value.call(parent, parent && parent.__data__, j, parents), - dataLength = data.length, - enterGroup = enter[j] = new Array(dataLength), - updateGroup = update[j] = new Array(dataLength), - exitGroup = exit[j] = new Array(groupLength); - - bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); - - // Now connect the enter nodes to their following update node, such that - // appendChild can insert the materialized enter node before this node, - // rather than at the end of the parent node. - for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { - if (previous = enterGroup[i0]) { - if (i0 >= i1) i1 = i0 + 1; - while (!(next = updateGroup[i1]) && ++i1 < dataLength); - previous._next = next || null; - } - } - } - - update = new Selection(update, parents); - update._enter = enter; - update._exit = exit; - return update; -} - -function selection_exit() { - return new Selection(this._exit || this._groups.map(sparse), this._parents); -} - -function selection_join(onenter, onupdate, onexit) { - var enter = this.enter(), update = this, exit = this.exit(); - enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + ""); - if (onupdate != null) update = onupdate(update); - if (onexit == null) exit.remove(); else onexit(exit); - return enter && update ? enter.merge(update).order() : update; -} - -function selection_merge(selection) { - - 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) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Selection(merges, this._parents); -} - -function selection_order() { - - for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { - for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { - if (node = group[i]) { - if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next); - next = node; - } - } - } - - return this; -} - -function selection_sort(compare) { - if (!compare) compare = ascending; - - function compareNode(a, b) { - return a && b ? compare(a.__data__, b.__data__) : !a - !b; - } - - for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group[i]) { - sortgroup[i] = node; - } - } - sortgroup.sort(compareNode); - } - - return new Selection(sortgroups, this._parents).order(); -} - -function ascending(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function selection_call() { - var callback = arguments[0]; - arguments[0] = this; - callback.apply(null, arguments); - return this; -} - -function selection_nodes() { - var nodes = new Array(this.size()), i = -1; - this.each(function() { nodes[++i] = this; }); - return nodes; -} - -function selection_node() { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { - var node = group[i]; - if (node) return node; - } - } - - return null; -} - -function selection_size() { - var size = 0; - this.each(function() { ++size; }); - return size; -} - -function selection_empty() { - return !this.node(); -} - -function selection_each(callback) { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { - if (node = group[i]) callback.call(node, node.__data__, i, group); - } - } - - return this; -} - -function attrRemove(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant(name, value) { - return function() { - this.setAttribute(name, value); - }; -} - -function attrConstantNS(fullname, value) { - return function() { - this.setAttributeNS(fullname.space, fullname.local, value); - }; -} - -function attrFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttribute(name); - else this.setAttribute(name, v); - }; -} - -function attrFunctionNS(fullname, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttributeNS(fullname.space, fullname.local); - else this.setAttributeNS(fullname.space, fullname.local, v); - }; -} - -function selection_attr(name, value) { - var fullname = namespace(name); - - if (arguments.length < 2) { - var node = this.node(); - return fullname.local - ? node.getAttributeNS(fullname.space, fullname.local) - : node.getAttribute(fullname); - } - - return this.each((value == null - ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function" - ? (fullname.local ? attrFunctionNS : attrFunction) - : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value)); -} - -function defaultView(node) { - return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node - || (node.document && node) // node is a Window - || node.defaultView; // node is a Document -} - -function styleRemove(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant(name, value, priority) { - return function() { - this.style.setProperty(name, value, priority); - }; -} - -function styleFunction(name, value, priority) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.style.removeProperty(name); - else this.style.setProperty(name, v, priority); - }; -} - -function selection_style(name, value, priority) { - return arguments.length > 1 - ? this.each((value == null - ? styleRemove : typeof value === "function" - ? styleFunction - : styleConstant)(name, value, priority == null ? "" : priority)) - : styleValue(this.node(), name); -} - -function styleValue(node, name) { - return node.style.getPropertyValue(name) - || defaultView(node).getComputedStyle(node, null).getPropertyValue(name); -} - -function propertyRemove(name) { - return function() { - delete this[name]; - }; -} - -function propertyConstant(name, value) { - return function() { - this[name] = value; - }; -} - -function propertyFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) delete this[name]; - else this[name] = v; - }; -} - -function selection_property(name, value) { - return arguments.length > 1 - ? this.each((value == null - ? propertyRemove : typeof value === "function" - ? propertyFunction - : propertyConstant)(name, value)) - : this.node()[name]; -} - -function classArray(string) { - return string.trim().split(/^|\s+/); -} - -function classList(node) { - return node.classList || new ClassList(node); -} - -function ClassList(node) { - this._node = node; - this._names = classArray(node.getAttribute("class") || ""); -} - -ClassList.prototype = { - add: function(name) { - var i = this._names.indexOf(name); - if (i < 0) { - this._names.push(name); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - remove: function(name) { - var i = this._names.indexOf(name); - if (i >= 0) { - this._names.splice(i, 1); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - contains: function(name) { - return this._names.indexOf(name) >= 0; - } -}; - -function classedAdd(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.add(names[i]); -} - -function classedRemove(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.remove(names[i]); -} - -function classedTrue(names) { - return function() { - classedAdd(this, names); - }; -} - -function classedFalse(names) { - return function() { - classedRemove(this, names); - }; -} - -function classedFunction(names, value) { - return function() { - (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); - }; -} - -function selection_classed(name, value) { - var names = classArray(name + ""); - - if (arguments.length < 2) { - var list = classList(this.node()), i = -1, n = names.length; - while (++i < n) if (!list.contains(names[i])) return false; - return true; - } - - return this.each((typeof value === "function" - ? classedFunction : value - ? classedTrue - : classedFalse)(names, value)); -} - -function textRemove() { - this.textContent = ""; -} - -function textConstant(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.textContent = v == null ? "" : v; - }; -} - -function selection_text(value) { - return arguments.length - ? this.each(value == null - ? textRemove : (typeof value === "function" - ? textFunction - : textConstant)(value)) - : this.node().textContent; -} - -function htmlRemove() { - this.innerHTML = ""; -} - -function htmlConstant(value) { - return function() { - this.innerHTML = value; - }; -} - -function htmlFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.innerHTML = v == null ? "" : v; - }; -} - -function selection_html(value) { - return arguments.length - ? this.each(value == null - ? htmlRemove : (typeof value === "function" - ? htmlFunction - : htmlConstant)(value)) - : this.node().innerHTML; -} - -function raise() { - if (this.nextSibling) this.parentNode.appendChild(this); -} - -function selection_raise() { - return this.each(raise); -} - -function lower() { - if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); -} - -function selection_lower() { - return this.each(lower); -} - -function selection_append(name) { - var create = typeof name === "function" ? name : creator(name); - return this.select(function() { - return this.appendChild(create.apply(this, arguments)); - }); -} - -function constantNull() { - return null; -} - -function selection_insert(name, before) { - var create = typeof name === "function" ? name : creator(name), - select = before == null ? constantNull : typeof before === "function" ? before : selector(before); - return this.select(function() { - return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); - }); -} - -function remove() { - var parent = this.parentNode; - if (parent) parent.removeChild(this); -} - -function selection_remove() { - return this.each(remove); -} - -function selection_cloneShallow() { - var clone = this.cloneNode(false), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_cloneDeep() { - var clone = this.cloneNode(true), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_clone(deep) { - return this.select(deep ? selection_cloneDeep : selection_cloneShallow); -} - -function selection_datum(value) { - return arguments.length - ? this.property("__data__", value) - : this.node().__data__; -} - -var filterEvents = {}; - -var event = null; - -if (typeof document !== "undefined") { - var element = document.documentElement; - if (!("onmouseenter" in element)) { - filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"}; - } -} - -function filterContextListener(listener, index, group) { - listener = contextListener(listener, index, group); - return function(event) { - var related = event.relatedTarget; - if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) { - listener.call(this, event); - } - }; -} - -function contextListener(listener, index, group) { - return function(event1) { - var event0 = event; // Events can be reentrant (e.g., focus). - event = event1; - try { - listener.call(this, this.__data__, index, group); - } finally { - event = event0; - } - }; -} - -function parseTypenames$1(typenames) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - return {type: t, name: name}; - }); -} - -function onRemove(typename) { - return function() { - var on = this.__on; - if (!on) return; - for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { - if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.capture); - } else { - on[++i] = o; - } - } - if (++i) on.length = i; - else delete this.__on; - }; -} - -function onAdd(typename, value, capture) { - var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener; - return function(d, i, group) { - var on = this.__on, o, listener = wrap(value, i, group); - if (on) for (var j = 0, m = on.length; j < m; ++j) { - if ((o = on[j]).type === typename.type && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.capture); - this.addEventListener(o.type, o.listener = listener, o.capture = capture); - o.value = value; - return; - } - } - this.addEventListener(typename.type, listener, capture); - o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture}; - if (!on) this.__on = [o]; - else on.push(o); - }; -} - -function selection_on(typename, value, capture) { - var typenames = parseTypenames$1(typename + ""), i, n = typenames.length, t; - - if (arguments.length < 2) { - var on = this.node().__on; - if (on) for (var j = 0, m = on.length, o; j < m; ++j) { - for (i = 0, o = on[j]; i < n; ++i) { - if ((t = typenames[i]).type === o.type && t.name === o.name) { - return o.value; - } - } - } - return; - } - - on = value ? onAdd : onRemove; - if (capture == null) capture = false; - for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture)); - return this; -} - -function customEvent(event1, listener, that, args) { - var event0 = event; - event1.sourceEvent = event; - event = event1; - try { - return listener.apply(that, args); - } finally { - event = event0; - } -} - -function dispatchEvent(node, type, params) { - var window = defaultView(node), - event = window.CustomEvent; - - if (typeof event === "function") { - event = new event(type, params); - } else { - event = window.document.createEvent("Event"); - if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail; - else event.initEvent(type, false, false); - } - - node.dispatchEvent(event); -} - -function dispatchConstant(type, params) { - return function() { - return dispatchEvent(this, type, params); - }; -} - -function dispatchFunction(type, params) { - return function() { - return dispatchEvent(this, type, params.apply(this, arguments)); - }; -} - -function selection_dispatch(type, params) { - return this.each((typeof params === "function" - ? dispatchFunction - : dispatchConstant)(type, params)); -} - -var root$1 = [null]; - -function Selection(groups, parents) { - this._groups = groups; - this._parents = parents; -} - -function selection() { - return new Selection([[document.documentElement]], root$1); -} - -Selection.prototype = selection.prototype = { - constructor: Selection, - select: selection_select, - selectAll: selection_selectAll, - filter: selection_filter, - data: selection_data, - enter: selection_enter, - exit: selection_exit, - join: selection_join, - merge: selection_merge, - order: selection_order, - sort: selection_sort, - call: selection_call, - nodes: selection_nodes, - node: selection_node, - size: selection_size, - empty: selection_empty, - each: selection_each, - attr: selection_attr, - style: selection_style, - property: selection_property, - classed: selection_classed, - text: selection_text, - html: selection_html, - raise: selection_raise, - lower: selection_lower, - append: selection_append, - insert: selection_insert, - remove: selection_remove, - clone: selection_clone, - datum: selection_datum, - on: selection_on, - dispatch: selection_dispatch -}; - -function select(selector) { - return typeof selector === "string" - ? new Selection([[document.querySelector(selector)]], [document.documentElement]) - : new Selection([[selector]], root$1); -} - -function sourceEvent() { - var current = event, source; - while (source = current.sourceEvent) current = source; - return current; -} - -function point(node, event) { - var svg = node.ownerSVGElement || node; - - if (svg.createSVGPoint) { - var point = svg.createSVGPoint(); - point.x = event.clientX, point.y = event.clientY; - point = point.matrixTransform(node.getScreenCTM().inverse()); - return [point.x, point.y]; - } - - var rect = node.getBoundingClientRect(); - return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; -} - -function mouse(node) { - var event = sourceEvent(); - if (event.changedTouches) event = event.changedTouches[0]; - return point(node, event); -} - -function touch(node, touches, identifier) { - if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches; - - for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) { - if ((touch = touches[i]).identifier === identifier) { - return point(node, touch); - } - } - - return null; -} - -function noevent() { - event.preventDefault(); - event.stopImmediatePropagation(); -} - -function dragDisable(view) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", noevent, true); - if ("onselectstart" in root) { - selection.on("selectstart.drag", noevent, true); - } else { - root.__noselect = root.style.MozUserSelect; - root.style.MozUserSelect = "none"; - } -} - -function yesdrag(view, noclick) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", null); - if (noclick) { - selection.on("click.drag", noevent, true); - setTimeout(function() { selection.on("click.drag", null); }, 0); - } - if ("onselectstart" in root) { - selection.on("selectstart.drag", null); - } else { - root.style.MozUserSelect = root.__noselect; - delete root.__noselect; - } -} - -function define(constructor, factory, prototype) { - constructor.prototype = factory.prototype = prototype; - prototype.constructor = constructor; -} - -function extend(parent, definition) { - var prototype = Object.create(parent.prototype); - for (var key in definition) prototype[key] = definition[key]; - return prototype; -} - -function Color() {} - -var darker = 0.7; -var brighter = 1 / darker; - -var reI = "\\s*([+-]?\\d+)\\s*", - reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", - reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", - reHex = /^#([0-9a-f]{3,8})$/, - reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"), - reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"), - reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"), - reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"), - reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"), - reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$"); - -var named = { - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgreen: 0x006400, - darkgrey: 0xa9a9a9, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - grey: 0x808080, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgreen: 0x90ee90, - lightgrey: 0xd3d3d3, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 -}; - -define(Color, color, { - copy: function(channels) { - return Object.assign(new this.constructor, this, channels); - }, - displayable: function() { - return this.rgb().displayable(); - }, - hex: color_formatHex, // Deprecated! Use color.formatHex. - formatHex: color_formatHex, - formatHsl: color_formatHsl, - formatRgb: color_formatRgb, - toString: color_formatRgb -}); - -function color_formatHex() { - return this.rgb().formatHex(); -} - -function color_formatHsl() { - return hslConvert(this).formatHsl(); -} - -function color_formatRgb() { - return this.rgb().formatRgb(); -} - -function color(format) { - var m, l; - format = (format + "").trim().toLowerCase(); - return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000 - : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00 - : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000 - : 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 - : null) // invalid hex - : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) - : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) - : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) - : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) - : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) - : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) - : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins - : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) - : null; -} - -function rgbn(n) { - return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); -} - -function rgba(r, g, b, a) { - if (a <= 0) r = g = b = NaN; - return new Rgb(r, g, b, a); -} - -function rgbConvert(o) { - if (!(o instanceof Color)) o = color(o); - if (!o) return new Rgb; - o = o.rgb(); - return new Rgb(o.r, o.g, o.b, o.opacity); -} - -function rgb(r, g, b, opacity) { - return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); -} - -function Rgb(r, g, b, opacity) { - this.r = +r; - this.g = +g; - this.b = +b; - this.opacity = +opacity; -} - -define(Rgb, rgb, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - rgb: function() { - return this; - }, - displayable: function() { - return (-0.5 <= this.r && this.r < 255.5) - && (-0.5 <= this.g && this.g < 255.5) - && (-0.5 <= this.b && this.b < 255.5) - && (0 <= this.opacity && this.opacity <= 1); - }, - hex: rgb_formatHex, // Deprecated! Use color.formatHex. - formatHex: rgb_formatHex, - formatRgb: rgb_formatRgb, - toString: rgb_formatRgb -})); - -function rgb_formatHex() { - return "#" + hex(this.r) + hex(this.g) + hex(this.b); -} - -function rgb_formatRgb() { - var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "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)) - + (a === 1 ? ")" : ", " + a + ")"); -} - -function hex(value) { - value = Math.max(0, Math.min(255, Math.round(value) || 0)); - return (value < 16 ? "0" : "") + value.toString(16); -} - -function hsla(h, s, l, a) { - if (a <= 0) h = s = l = NaN; - else if (l <= 0 || l >= 1) h = s = NaN; - else if (s <= 0) h = NaN; - return new Hsl(h, s, l, a); -} - -function hslConvert(o) { - if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Color)) o = color(o); - if (!o) return new Hsl; - if (o instanceof Hsl) return o; - o = o.rgb(); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - h = NaN, - s = max - min, - l = (max + min) / 2; - if (s) { - if (r === max) h = (g - b) / s + (g < b) * 6; - else if (g === max) h = (b - r) / s + 2; - else h = (r - g) / s + 4; - s /= l < 0.5 ? max + min : 2 - max - min; - h *= 60; - } else { - s = l > 0 && l < 1 ? 0 : h; - } - return new Hsl(h, s, l, o.opacity); -} - -function hsl(h, s, l, opacity) { - return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); -} - -function Hsl(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; -} - -define(Hsl, hsl, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - rgb: function() { - var h = this.h % 360 + (this.h < 0) * 360, - s = isNaN(h) || isNaN(this.s) ? 0 : this.s, - l = this.l, - m2 = l + (l < 0.5 ? l : 1 - l) * s, - m1 = 2 * l - m2; - return new Rgb( - hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), - hsl2rgb(h, m1, m2), - hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), - 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 a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "hsl(" : "hsla(") - + (this.h || 0) + ", " - + (this.s || 0) * 100 + "%, " - + (this.l || 0) * 100 + "%" - + (a === 1 ? ")" : ", " + a + ")"); - } -})); - -/* From FvD 13.37, CSS Color Module Level 3 */ -function hsl2rgb(h, m1, m2) { - return (h < 60 ? m1 + (m2 - m1) * h / 60 - : h < 180 ? m2 - : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 - : m1) * 255; -} - -function constant$1(x) { - return function() { - return x; - }; -} - -function linear(a, d) { - return function(t) { - return a + t * d; - }; -} - -function exponential(a, b, y) { - return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { - return Math.pow(a + t * b, y); - }; -} - -function gamma(y) { - return (y = +y) === 1 ? nogamma : function(a, b) { - return b - a ? exponential(a, b, y) : constant$1(isNaN(a) ? b : a); - }; -} - -function nogamma(a, b) { - var d = b - a; - return d ? linear(a, d) : constant$1(isNaN(a) ? b : a); -} - -var interpolateRgb = (function rgbGamma(y) { - var color = gamma(y); - - function rgb$1(start, end) { - var r = color((start = rgb(start)).r, (end = rgb(end)).r), - g = color(start.g, end.g), - b = color(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.r = r(t); - start.g = g(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; - } - - rgb$1.gamma = rgbGamma; - - return rgb$1; -})(1); - -function interpolateNumber(a, b) { - return a = +a, b -= a, function(t) { - return a + b * t; - }; -} - -var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, - reB = new RegExp(reA.source, "g"); - -function zero(b) { - return function() { - return b; - }; -} - -function one(b) { - return function(t) { - return b(t) + ""; - }; -} - -function interpolateString(a, b) { - var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b - am, // current match in a - bm, // current match in b - bs, // string preceding current number in b, if any - i = -1, // index in s - s = [], // string constants and placeholders - q = []; // number interpolators - - // Coerce inputs to strings. - a = a + "", b = b + ""; - - // Interpolate pairs of numbers in a & b. - while ((am = reA.exec(a)) - && (bm = reB.exec(b))) { - if ((bs = bm.index) > bi) { // a string precedes the next number in b - bs = b.slice(bi, bs); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match - if (s[i]) s[i] += bm; // coalesce with previous string - else s[++i] = bm; - } else { // interpolate non-matching numbers - s[++i] = null; - q.push({i: i, x: interpolateNumber(am, bm)}); - } - bi = reB.lastIndex; - } - - // Add remains of b. - if (bi < b.length) { - bs = b.slice(bi); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - - // Special optimization for only a single match. - // Otherwise, interpolate each of the numbers and rejoin the string. - return s.length < 2 ? (q[0] - ? one(q[0].x) - : zero(b)) - : (b = q.length, function(t) { - for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }); -} - -var degrees = 180 / Math.PI; - -var identity = { - translateX: 0, - translateY: 0, - rotate: 0, - skewX: 0, - scaleX: 1, - scaleY: 1 -}; - -function decompose(a, b, c, d, e, f) { - var scaleX, scaleY, skewX; - if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; - if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; - if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; - if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; - return { - translateX: e, - translateY: f, - rotate: Math.atan2(b, a) * degrees, - skewX: Math.atan(skewX) * degrees, - scaleX: scaleX, - scaleY: scaleY - }; -} - -var cssNode, - cssRoot, - cssView, - svgNode; - -function parseCss(value) { - if (value === "none") return identity; - if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView; - cssNode.style.transform = value; - value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform"); - cssRoot.removeChild(cssNode); - value = value.slice(7, -1).split(","); - return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]); -} - -function parseSvg(value) { - if (value == null) return identity; - if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); - svgNode.setAttribute("transform", value); - if (!(value = svgNode.transform.baseVal.consolidate())) return identity; - value = value.matrix; - return decompose(value.a, value.b, value.c, value.d, value.e, value.f); -} - -function interpolateTransform(parse, pxComma, pxParen, degParen) { - - function pop(s) { - return s.length ? s.pop() + " " : ""; - } - - function translate(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push("translate(", null, pxComma, null, pxParen); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb || yb) { - s.push("translate(" + xb + pxComma + yb + pxParen); - } - } - - function rotate(a, b, s, q) { - if (a !== b) { - if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path - q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "rotate(" + b + degParen); - } - } - - function skewX(a, b, s, q) { - if (a !== b) { - q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "skewX(" + b + degParen); - } - } - - function scale(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push(pop(s) + "scale(", null, ",", null, ")"); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb !== 1 || yb !== 1) { - s.push(pop(s) + "scale(" + xb + "," + yb + ")"); - } - } - - return function(a, b) { - var s = [], // string constants and placeholders - q = []; // number interpolators - a = parse(a), b = parse(b); - translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); - rotate(a.rotate, b.rotate, s, q); - skewX(a.skewX, b.skewX, s, q); - scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); - a = b = null; // gc - return function(t) { - var i = -1, n = q.length, o; - while (++i < n) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }; - }; -} - -var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); -var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); - -var rho = Math.SQRT2, - rho2 = 2, - rho4 = 4, - epsilon2 = 1e-12; - -function cosh(x) { - return ((x = Math.exp(x)) + 1 / x) / 2; -} - -function sinh(x) { - return ((x = Math.exp(x)) - 1 / x) / 2; -} - -function tanh(x) { - return ((x = Math.exp(2 * x)) - 1) / (x + 1); -} - -// p0 = [ux0, uy0, w0] -// p1 = [ux1, uy1, w1] -function interpolateZoom(p0, p1) { - var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], - ux1 = p1[0], uy1 = p1[1], w1 = p1[2], - dx = ux1 - ux0, - dy = uy1 - uy0, - d2 = dx * dx + dy * dy, - i, - S; - - // Special case for u0 ≅ u1. - if (d2 < epsilon2) { - S = Math.log(w1 / w0) / rho; - i = function(t) { - return [ - ux0 + t * dx, - uy0 + t * dy, - w0 * Math.exp(rho * t * S) - ]; - }; - } - - // General case. - else { - var d1 = Math.sqrt(d2), - b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), - b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), - r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), - r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); - S = (r1 - r0) / rho; - i = function(t) { - var s = t * S, - coshr0 = cosh(r0), - u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); - return [ - ux0 + u * dx, - uy0 + u * dy, - w0 * coshr0 / cosh(rho * s + r0) - ]; - }; - } - - i.duration = S * 1000; - - return i; -} - -var frame = 0, // is an animation frame pending? - timeout = 0, // is a timeout pending? - interval = 0, // are any timers active? - pokeDelay = 1000, // how frequently we check for clock skew - taskHead, - taskTail, - clockLast = 0, - clockNow = 0, - clockSkew = 0, - clock = typeof performance === "object" && performance.now ? performance : Date, - setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; - -function now() { - return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); -} - -function clearNow() { - clockNow = 0; -} - -function Timer() { - this._call = - this._time = - this._next = null; -} - -Timer.prototype = timer.prototype = { - constructor: Timer, - restart: function(callback, delay, time) { - if (typeof callback !== "function") throw new TypeError("callback is not a function"); - time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); - if (!this._next && taskTail !== this) { - if (taskTail) taskTail._next = this; - else taskHead = this; - taskTail = this; - } - this._call = callback; - this._time = time; - sleep(); - }, - stop: function() { - if (this._call) { - this._call = null; - this._time = Infinity; - sleep(); - } - } -}; - -function timer(callback, delay, time) { - var t = new Timer; - t.restart(callback, delay, time); - return t; -} - -function timerFlush() { - now(); // Get the current time, if not already set. - ++frame; // Pretend we’ve set an alarm, if we haven’t already. - var t = taskHead, e; - while (t) { - if ((e = clockNow - t._time) >= 0) t._call.call(null, e); - t = t._next; - } - --frame; -} - -function wake() { - clockNow = (clockLast = clock.now()) + clockSkew; - frame = timeout = 0; - try { - timerFlush(); - } finally { - frame = 0; - nap(); - clockNow = 0; - } -} - -function poke() { - var now = clock.now(), delay = now - clockLast; - if (delay > pokeDelay) clockSkew -= delay, clockLast = now; -} - -function nap() { - var t0, t1 = taskHead, t2, time = Infinity; - while (t1) { - if (t1._call) { - if (time > t1._time) time = t1._time; - t0 = t1, t1 = t1._next; - } else { - t2 = t1._next, t1._next = null; - t1 = t0 ? t0._next = t2 : taskHead = t2; - } - } - taskTail = t0; - sleep(time); -} - -function sleep(time) { - if (frame) return; // Soonest alarm already set, or will be. - if (timeout) timeout = clearTimeout(timeout); - var delay = time - clockNow; // Strictly less than if we recomputed clockNow. - if (delay > 24) { - if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew); - if (interval) interval = clearInterval(interval); - } else { - if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); - frame = 1, setFrame(wake); - } -} - -function timeout$1(callback, delay, time) { - var t = new Timer; - delay = delay == null ? 0 : +delay; - t.restart(function(elapsed) { - t.stop(); - callback(elapsed + delay); - }, delay, time); - return t; -} - -var emptyOn = dispatch("start", "end", "cancel", "interrupt"); -var emptyTween = []; - -var CREATED = 0; -var SCHEDULED = 1; -var STARTING = 2; -var STARTED = 3; -var RUNNING = 4; -var ENDING = 5; -var ENDED = 6; - -function schedule(node, name, id, index, group, timing) { - var schedules = node.__transition; - if (!schedules) node.__transition = {}; - else if (id in schedules) return; - create(node, id, { - name: name, - index: index, // For context during callback. - group: group, // For context during callback. - on: emptyOn, - tween: emptyTween, - time: timing.time, - delay: timing.delay, - duration: timing.duration, - ease: timing.ease, - timer: null, - state: CREATED - }); -} - -function init(node, id) { - var schedule = get$4(node, id); - if (schedule.state > CREATED) throw new Error("too late; already scheduled"); - return schedule; -} - -function set$4(node, id) { - var schedule = get$4(node, id); - if (schedule.state > STARTED) throw new Error("too late; already running"); - return schedule; -} - -function get$4(node, id) { - var schedule = node.__transition; - if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found"); - return schedule; -} - -function create(node, id, self) { - var schedules = node.__transition, - tween; - - // Initialize the self timer when the transition is created. - // Note the actual delay is not known until the first callback! - schedules[id] = self; - self.timer = timer(schedule, 0, self.time); - - function schedule(elapsed) { - self.state = SCHEDULED; - self.timer.restart(start, self.delay, self.time); - - // If the elapsed delay is less than our first sleep, start immediately. - if (self.delay <= elapsed) start(elapsed - self.delay); - } - - function start(elapsed) { - var i, j, n, o; - - // If the state is not SCHEDULED, then we previously errored on start. - if (self.state !== SCHEDULED) return stop(); - - for (i in schedules) { - o = schedules[i]; - if (o.name !== self.name) continue; - - // While this element already has a starting transition during this frame, - // defer starting an interrupting transition until that transition has a - // chance to tick (and possibly end); see d3/d3-transition#54! - if (o.state === STARTED) return timeout$1(start); - - // Interrupt the active transition, if any. - if (o.state === RUNNING) { - o.state = ENDED; - o.timer.stop(); - o.on.call("interrupt", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - - // Cancel any pre-empted transitions. - else if (+i < id) { - o.state = ENDED; - o.timer.stop(); - o.on.call("cancel", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - } - - // Defer the first tick to end of the current frame; see d3/d3#1576. - // Note the transition may be canceled after start and before the first tick! - // Note this must be scheduled before the start event; see d3/d3-transition#16! - // Assuming this is successful, subsequent callbacks go straight to tick. - timeout$1(function() { - if (self.state === STARTED) { - self.state = RUNNING; - self.timer.restart(tick, self.delay, self.time); - tick(elapsed); - } - }); - - // Dispatch the start event. - // Note this must be done before the tween are initialized. - self.state = STARTING; - self.on.call("start", node, node.__data__, self.index, self.group); - if (self.state !== STARTING) return; // interrupted - self.state = STARTED; - - // Initialize the tween, deleting null tween. - tween = new Array(n = self.tween.length); - for (i = 0, j = -1; i < n; ++i) { - if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) { - tween[++j] = o; - } - } - tween.length = j + 1; - } - - function tick(elapsed) { - var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), - i = -1, - n = tween.length; - - while (++i < n) { - tween[i].call(node, t); - } - - // Dispatch the end event. - if (self.state === ENDING) { - self.on.call("end", node, node.__data__, self.index, self.group); - stop(); - } - } - - function stop() { - self.state = ENDED; - self.timer.stop(); - delete schedules[id]; - for (var i in schedules) return; // eslint-disable-line no-unused-vars - delete node.__transition; - } -} - -function interrupt(node, name) { - var schedules = node.__transition, - schedule, - active, - empty = true, - i; - - if (!schedules) return; - - name = name == null ? null : name + ""; - - for (i in schedules) { - if ((schedule = schedules[i]).name !== name) { empty = false; continue; } - active = schedule.state > STARTING && schedule.state < ENDING; - schedule.state = ENDED; - schedule.timer.stop(); - schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group); - delete schedules[i]; - } - - if (empty) delete node.__transition; -} - -function selection_interrupt(name) { - return this.each(function() { - interrupt(this, name); - }); -} - -function tweenRemove(id, name) { - var tween0, tween1; - return function() { - var schedule = set$4(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = tween0 = tween; - for (var i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1 = tween1.slice(); - tween1.splice(i, 1); - break; - } - } - } - - schedule.tween = tween1; - }; -} - -function tweenFunction(id, name, value) { - var tween0, tween1; - if (typeof value !== "function") throw new Error; - return function() { - var schedule = set$4(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = (tween0 = tween).slice(); - for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1[i] = t; - break; - } - } - if (i === n) tween1.push(t); - } - - schedule.tween = tween1; - }; -} - -function transition_tween(name, value) { - var id = this._id; - - name += ""; - - if (arguments.length < 2) { - var tween = get$4(this.node(), id).tween; - for (var i = 0, n = tween.length, t; i < n; ++i) { - if ((t = tween[i]).name === name) { - return t.value; - } - } - return null; - } - - return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value)); -} - -function tweenValue(transition, name, value) { - var id = transition._id; - - transition.each(function() { - var schedule = set$4(this, id); - (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments); - }); - - return function(node) { - return get$4(node, id).value[name]; - }; -} - -function interpolate(a, b) { - var c; - return (typeof b === "number" ? interpolateNumber - : b instanceof color ? interpolateRgb - : (c = color(b)) ? (b = c, interpolateRgb) - : interpolateString)(a, b); -} - -function attrRemove$1(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS$1(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant$1(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttribute(name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrConstantNS$1(fullname, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttributeNS(fullname.space, fullname.local); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrFunction$1(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttribute(name); - string0 = this.getAttribute(name); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function attrFunctionNS$1(fullname, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local); - string0 = this.getAttributeNS(fullname.space, fullname.local); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function transition_attr(name, value) { - var fullname = namespace(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate; - return this.attrTween(name, typeof value === "function" - ? (fullname.local ? attrFunctionNS$1 : attrFunction$1)(fullname, i, tweenValue(this, "attr." + name, value)) - : value == null ? (fullname.local ? attrRemoveNS$1 : attrRemove$1)(fullname) - : (fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, i, value)); -} - -function attrInterpolate(name, i) { - return function(t) { - this.setAttribute(name, i(t)); - }; -} - -function attrInterpolateNS(fullname, i) { - return function(t) { - this.setAttributeNS(fullname.space, fullname.local, i(t)); - }; -} - -function attrTweenNS(fullname, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i); - return t0; - } - tween._value = value; - return tween; -} - -function attrTween(name, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i); - return t0; - } - tween._value = value; - return tween; -} - -function transition_attrTween(name, value) { - var key = "attr." + name; - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - var fullname = namespace(name); - return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); -} - -function delayFunction(id, value) { - return function() { - init(this, id).delay = +value.apply(this, arguments); - }; -} - -function delayConstant(id, value) { - return value = +value, function() { - init(this, id).delay = value; - }; -} - -function transition_delay(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? delayFunction - : delayConstant)(id, value)) - : get$4(this.node(), id).delay; -} - -function durationFunction(id, value) { - return function() { - set$4(this, id).duration = +value.apply(this, arguments); - }; -} - -function durationConstant(id, value) { - return value = +value, function() { - set$4(this, id).duration = value; - }; -} - -function transition_duration(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? durationFunction - : durationConstant)(id, value)) - : get$4(this.node(), id).duration; -} - -function easeConstant(id, value) { - if (typeof value !== "function") throw new Error; - return function() { - set$4(this, id).ease = value; - }; -} - -function transition_ease(value) { - var id = this._id; - - return arguments.length - ? this.each(easeConstant(id, value)) - : get$4(this.node(), id).ease; -} - -function transition_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Transition(subgroups, this._parents, this._name, this._id); -} - -function transition_merge(transition) { - if (transition._id !== this._id) throw new Error; - - 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) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Transition(merges, this._parents, this._name, this._id); -} - -function start(name) { - return (name + "").trim().split(/^|\s+/).every(function(t) { - var i = t.indexOf("."); - if (i >= 0) t = t.slice(0, i); - return !t || t === "start"; - }); -} - -function onFunction(id, name, listener) { - var on0, on1, sit = start(name) ? init : set$4; - return function() { - var schedule = sit(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener); - - schedule.on = on1; - }; -} - -function transition_on(name, listener) { - var id = this._id; - - return arguments.length < 2 - ? get$4(this.node(), id).on.on(name) - : this.each(onFunction(id, name, listener)); -} - -function removeFunction(id) { - return function() { - var parent = this.parentNode; - for (var i in this.__transition) if (+i !== id) return; - if (parent) parent.removeChild(this); - }; -} - -function transition_remove() { - return this.on("end.remove", removeFunction(this._id)); -} - -function transition_select(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - schedule(subgroup[i], name, id, i, subgroup, get$4(node, id)); - } - } - } - - return new Transition(subgroups, this._parents, name, id); -} - -function transition_selectAll(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - for (var children = select.call(node, node.__data__, i, group), child, inherit = get$4(node, id), k = 0, l = children.length; k < l; ++k) { - if (child = children[k]) { - schedule(child, name, id, k, children, inherit); - } - } - subgroups.push(children); - parents.push(node); - } - } - } - - return new Transition(subgroups, parents, name, id); -} - -var Selection$1 = selection.prototype.constructor; - -function transition_selection() { - return new Selection$1(this._groups, this._parents); -} - -function styleNull(name, interpolate) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - string1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, string10 = string1); - }; -} - -function styleRemove$1(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant$1(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = styleValue(this, name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function styleFunction$1(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - value1 = value(this), - string1 = value1 + ""; - if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function styleMaybeRemove(id, name) { - var on0, on1, listener0, key = "style." + name, event = "end." + key, remove; - return function() { - var schedule = set$4(this, id), - on = schedule.on, - listener = schedule.value[key] == null ? remove || (remove = styleRemove$1(name)) : undefined; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener); - - schedule.on = on1; - }; -} - -function transition_style(name, value, priority) { - var i = (name += "") === "transform" ? interpolateTransformCss : interpolate; - return value == null ? this - .styleTween(name, styleNull(name, i)) - .on("end.style." + name, styleRemove$1(name)) - : typeof value === "function" ? this - .styleTween(name, styleFunction$1(name, i, tweenValue(this, "style." + name, value))) - .each(styleMaybeRemove(this._id, name)) - : this - .styleTween(name, styleConstant$1(name, i, value), priority) - .on("end.style." + name, null); -} - -function styleInterpolate(name, i, priority) { - return function(t) { - this.style.setProperty(name, i(t), priority); - }; -} - -function styleTween(name, value, priority) { - var t, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority); - return t; - } - tween._value = value; - return tween; -} - -function transition_styleTween(name, value, priority) { - var key = "style." + (name += ""); - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); -} - -function textConstant$1(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction$1(value) { - return function() { - var value1 = value(this); - this.textContent = value1 == null ? "" : value1; - }; -} - -function transition_text(value) { - return this.tween("text", typeof value === "function" - ? textFunction$1(tweenValue(this, "text", value)) - : textConstant$1(value == null ? "" : value + "")); -} - -function transition_transition() { - var name = this._name, - id0 = this._id, - id1 = newId(); - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - var inherit = get$4(node, id0); - schedule(node, name, id1, i, group, { - time: inherit.time + inherit.delay + inherit.duration, - delay: 0, - duration: inherit.duration, - ease: inherit.ease - }); - } - } - } - - return new Transition(groups, this._parents, name, id1); -} - -function transition_end() { - var on0, on1, that = this, id = that._id, size = that.size(); - return new Promise(function(resolve, reject) { - var cancel = {value: reject}, - end = {value: function() { if (--size === 0) resolve(); }}; - - that.each(function() { - var schedule = set$4(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) { - on1 = (on0 = on).copy(); - on1._.cancel.push(cancel); - on1._.interrupt.push(cancel); - on1._.end.push(end); - } - - schedule.on = on1; - }); - }); -} - -var id = 0; - -function Transition(groups, parents, name, id) { - this._groups = groups; - this._parents = parents; - this._name = name; - this._id = id; -} - -function transition(name) { - return selection().transition(name); -} - -function newId() { - return ++id; -} - -var selection_prototype = selection.prototype; - -Transition.prototype = transition.prototype = { - constructor: Transition, - select: transition_select, - selectAll: transition_selectAll, - filter: transition_filter, - merge: transition_merge, - selection: transition_selection, - transition: transition_transition, - call: selection_prototype.call, - nodes: selection_prototype.nodes, - node: selection_prototype.node, - size: selection_prototype.size, - empty: selection_prototype.empty, - each: selection_prototype.each, - on: transition_on, - attr: transition_attr, - attrTween: transition_attrTween, - style: transition_style, - styleTween: transition_styleTween, - text: transition_text, - remove: transition_remove, - tween: transition_tween, - delay: transition_delay, - duration: transition_duration, - ease: transition_ease, - end: transition_end -}; - -function cubicInOut(t) { - return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; -} - -var defaultTiming = { - time: null, // Set on use. - delay: 0, - duration: 250, - ease: cubicInOut -}; - -function inherit(node, id) { - var timing; - while (!(timing = node.__transition) || !(timing = timing[id])) { - if (!(node = node.parentNode)) { - return defaultTiming.time = now(), defaultTiming; - } - } - return timing; -} - -function selection_transition(name) { - var id, - timing; - - if (name instanceof Transition) { - id = name._id, name = name._name; - } else { - id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + ""; - } - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - schedule(node, name, id, i, group, timing || inherit(node, id)); - } - } - } - - return new Transition(groups, this._parents, name, id); -} - -selection.prototype.interrupt = selection_interrupt; -selection.prototype.transition = selection_transition; - -function constant$2(x) { - return function() { - return x; - }; -} - -function ZoomEvent(target, type, transform) { - this.target = target; - this.type = type; - this.transform = transform; -} - -function Transform(k, x, y) { - this.k = k; - this.x = x; - this.y = y; -} - -Transform.prototype = { - constructor: Transform, - scale: function(k) { - return k === 1 ? this : new Transform(this.k * k, this.x, this.y); - }, - translate: function(x, y) { - return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y); - }, - apply: function(point) { - return [point[0] * this.k + this.x, point[1] * this.k + this.y]; - }, - applyX: function(x) { - return x * this.k + this.x; - }, - applyY: function(y) { - return y * this.k + this.y; - }, - invert: function(location) { - return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; - }, - invertX: function(x) { - return (x - this.x) / this.k; - }, - invertY: function(y) { - return (y - this.y) / this.k; - }, - rescaleX: function(x) { - return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x)); - }, - rescaleY: function(y) { - return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y)); - }, - toString: function() { - return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; - } -}; - -var identity$1 = new Transform(1, 0, 0); - -function nopropagation() { - event.stopImmediatePropagation(); -} - -function noevent$1() { - event.preventDefault(); - event.stopImmediatePropagation(); -} - -// Ignore right-click, since that should open the context menu. -function defaultFilter() { - return !event.ctrlKey && !event.button; -} - -function defaultExtent() { - var e = this; - if (e instanceof SVGElement) { - e = e.ownerSVGElement || e; - if (e.hasAttribute("viewBox")) { - e = e.viewBox.baseVal; - return [[e.x, e.y], [e.x + e.width, e.y + e.height]]; - } - return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]]; - } - return [[0, 0], [e.clientWidth, e.clientHeight]]; -} - -function defaultTransform() { - return this.__zoom || identity$1; -} - -function defaultWheelDelta() { - return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002); -} - -function defaultTouchable() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -function defaultConstrain(transform, extent, translateExtent) { - var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], - dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], - dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], - dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1]; - return transform.translate( - dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), - dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) - ); -} - -function zoom() { - var filter = defaultFilter, - extent = defaultExtent, - constrain = defaultConstrain, - wheelDelta = defaultWheelDelta, - touchable = defaultTouchable, - scaleExtent = [0, Infinity], - translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], - duration = 250, - interpolate = interpolateZoom, - listeners = dispatch("start", "zoom", "end"), - touchstarting, - touchending, - touchDelay = 500, - wheelDelay = 150, - clickDistance2 = 0; - - function zoom(selection) { - selection - .property("__zoom", defaultTransform) - .on("wheel.zoom", wheeled) - .on("mousedown.zoom", mousedowned) - .on("dblclick.zoom", dblclicked) - .filter(touchable) - .on("touchstart.zoom", touchstarted) - .on("touchmove.zoom", touchmoved) - .on("touchend.zoom touchcancel.zoom", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - zoom.transform = function(collection, transform, point) { - var selection = collection.selection ? collection.selection() : collection; - selection.property("__zoom", defaultTransform); - if (collection !== selection) { - schedule(collection, transform, point); - } else { - selection.interrupt().each(function() { - gesture(this, arguments) - .start() - .zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform) - .end(); - }); - } - }; - - zoom.scaleBy = function(selection, k, p) { - zoom.scaleTo(selection, function() { - var k0 = this.__zoom.k, - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return k0 * k1; - }, p); - }; - - zoom.scaleTo = function(selection, k, p) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t0 = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p, - p1 = t0.invert(p0), - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent); - }, p); - }; - - zoom.translateBy = function(selection, x, y) { - zoom.transform(selection, function() { - return constrain(this.__zoom.translate( - typeof x === "function" ? x.apply(this, arguments) : x, - typeof y === "function" ? y.apply(this, arguments) : y - ), extent.apply(this, arguments), translateExtent); - }); - }; - - zoom.translateTo = function(selection, x, y, p) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p; - return constrain(identity$1.translate(p0[0], p0[1]).scale(t.k).translate( - typeof x === "function" ? -x.apply(this, arguments) : -x, - typeof y === "function" ? -y.apply(this, arguments) : -y - ), e, translateExtent); - }, p); - }; - - function scale(transform, k) { - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k)); - return k === transform.k ? transform : new Transform(k, transform.x, transform.y); - } - - function translate(transform, p0, p1) { - var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k; - return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y); - } - - function centroid(extent) { - return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2]; - } - - function schedule(transition, transform, point) { - transition - .on("start.zoom", function() { gesture(this, arguments).start(); }) - .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); }) - .tween("zoom", function() { - var that = this, - args = arguments, - g = gesture(that, args), - e = extent.apply(that, args), - p = point == null ? centroid(e) : typeof point === "function" ? point.apply(that, args) : point, - w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), - a = that.__zoom, - b = typeof transform === "function" ? transform.apply(that, args) : transform, - i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k)); - return function(t) { - if (t === 1) t = b; // Avoid rounding error on end. - else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); } - g.zoom(null, t); - }; - }); - } - - function gesture(that, args, clean) { - return (!clean && that.__zooming) || new Gesture(that, args); - } - - function Gesture(that, args) { - this.that = that; - this.args = args; - this.active = 0; - this.extent = extent.apply(that, args); - this.taps = 0; - } - - Gesture.prototype = { - start: function() { - if (++this.active === 1) { - this.that.__zooming = this; - this.emit("start"); - } - return this; - }, - zoom: function(key, transform) { - if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]); - if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]); - if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]); - this.that.__zoom = transform; - this.emit("zoom"); - return this; - }, - end: function() { - if (--this.active === 0) { - delete this.that.__zooming; - this.emit("end"); - } - return this; - }, - emit: function(type) { - customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]); - } - }; - - function wheeled() { - if (!filter.apply(this, arguments)) return; - var g = gesture(this, arguments), - t = this.__zoom, - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), - p = mouse(this); - - // If the mouse is in the same location as before, reuse it. - // If there were recent wheel events, reset the wheel idle timeout. - if (g.wheel) { - if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) { - g.mouse[1] = t.invert(g.mouse[0] = p); - } - clearTimeout(g.wheel); - } - - // If this wheel event won’t trigger a transform change, ignore it. - else if (t.k === k) return; - - // Otherwise, capture the mouse point and location at the start. - else { - g.mouse = [p, t.invert(p)]; - interrupt(this); - g.start(); - } - - noevent$1(); - g.wheel = setTimeout(wheelidled, wheelDelay); - g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent)); - - function wheelidled() { - g.wheel = null; - g.end(); - } - } - - function mousedowned() { - if (touchending || !filter.apply(this, arguments)) return; - var g = gesture(this, arguments, true), - v = select(event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), - p = mouse(this), - x0 = event.clientX, - y0 = event.clientY; - - dragDisable(event.view); - nopropagation(); - g.mouse = [p, this.__zoom.invert(p)]; - interrupt(this); - g.start(); - - function mousemoved() { - noevent$1(); - if (!g.moved) { - var dx = event.clientX - x0, dy = event.clientY - y0; - g.moved = dx * dx + dy * dy > clickDistance2; - } - g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent)); - } - - function mouseupped() { - v.on("mousemove.zoom mouseup.zoom", null); - yesdrag(event.view, g.moved); - noevent$1(); - g.end(); - } - } - - function dblclicked() { - if (!filter.apply(this, arguments)) return; - var t0 = this.__zoom, - p0 = mouse(this), - p1 = t0.invert(p0), - k1 = t0.k * (event.shiftKey ? 0.5 : 2), - t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent); - - noevent$1(); - if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0); - else select(this).call(zoom.transform, t1); - } - - function touchstarted() { - if (!filter.apply(this, arguments)) return; - var touches = event.touches, - n = touches.length, - g = gesture(this, arguments, event.changedTouches.length === n), - started, i, t, p; - - nopropagation(); - for (i = 0; i < n; ++i) { - t = touches[i], p = touch(this, touches, t.identifier); - p = [p, this.__zoom.invert(p), t.identifier]; - if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting; - else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0; - } - - if (touchstarting) touchstarting = clearTimeout(touchstarting); - - if (started) { - if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay); - interrupt(this); - g.start(); - } - } - - function touchmoved() { - if (!this.__zooming) return; - var g = gesture(this, arguments), - touches = event.changedTouches, - n = touches.length, i, t, p, l; - - noevent$1(); - if (touchstarting) touchstarting = clearTimeout(touchstarting); - g.taps = 0; - for (i = 0; i < n; ++i) { - t = touches[i], p = touch(this, touches, t.identifier); - if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p; - else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p; - } - t = g.that.__zoom; - if (g.touch1) { - var p0 = g.touch0[0], l0 = g.touch0[1], - p1 = g.touch1[0], l1 = g.touch1[1], - dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, - dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl; - t = scale(t, Math.sqrt(dp / dl)); - p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; - l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; - } - else if (g.touch0) p = g.touch0[0], l = g.touch0[1]; - else return; - g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent)); - } - - function touchended() { - if (!this.__zooming) return; - var g = gesture(this, arguments), - touches = event.changedTouches, - n = touches.length, i, t; - - nopropagation(); - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, touchDelay); - for (i = 0; i < n; ++i) { - t = touches[i]; - if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0; - else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1; - } - if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1; - if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]); - else { - g.end(); - // If this was a dbltap, reroute to the (optional) dblclick.zoom handler. - if (g.taps === 2) { - var p = select(this).on("dblclick.zoom"); - if (p) p.apply(this, arguments); - } - } - } - - zoom.wheelDelta = function(_) { - return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant$2(+_), zoom) : wheelDelta; - }; - - zoom.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$2(!!_), zoom) : filter; - }; - - zoom.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$2(!!_), zoom) : touchable; - }; - - zoom.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant$2([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent; - }; - - zoom.scaleExtent = function(_) { - return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]]; - }; - - zoom.translateExtent = function(_) { - 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]]]; - }; - - zoom.constrain = function(_) { - return arguments.length ? (constrain = _, zoom) : constrain; - }; - - zoom.duration = function(_) { - return arguments.length ? (duration = +_, zoom) : duration; - }; - - zoom.interpolate = function(_) { - return arguments.length ? (interpolate = _, zoom) : interpolate; - }; - - zoom.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? zoom : value; - }; - - zoom.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2); - }; - - return zoom; -} - -// do not edit .js files directly - edit src/index.jst - - - -var fastDeepEqual = function equal(a, b) { - if (a === b) return true; - - if (a && b && typeof a == 'object' && typeof b == 'object') { - if (a.constructor !== b.constructor) return false; - - var length, i, keys; - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (!equal(a[i], b[i])) return false; - return true; - } - - - - if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; - if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); - if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); - - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) return false; - - for (i = length; i-- !== 0;) - if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; - - for (i = length; i-- !== 0;) { - var key = keys[i]; - - if (!equal(a[key], b[key])) return false; - } - - return true; - } - - // true if both NaN, false otherwise - return a!==a && b!==b; -}; - -var isInputDOMNode = function (e) { - var target = e.target; - return e && target && ['INPUT', 'SELECT', 'TEXTAREA', 'BUTTON'].includes(target.nodeName); -}; -var getDimensions = function (node) { return ({ - width: node.offsetWidth, - height: node.offsetHeight, -}); }; - -var getHandleBounds = function (selector, nodeElement, parentBounds, k) { - var handles = nodeElement.querySelectorAll(selector); - if (!handles || !handles.length) { - return null; - } - var handlesArray = Array.from(handles); - return handlesArray.map(function (handle) { - var bounds = handle.getBoundingClientRect(); - var dimensions = getDimensions(handle); - var nodeIdAttr = handle.getAttribute('data-nodeid'); - var handlePosition = handle.getAttribute('data-handlepos'); - var nodeIdSplitted = nodeIdAttr ? nodeIdAttr.split('__') : null; - var handleId = null; - if (nodeIdSplitted) { - handleId = (nodeIdSplitted.length ? nodeIdSplitted[1] : nodeIdSplitted); - } - return __assign({ id: handleId, position: handlePosition, x: (bounds.left - parentBounds.left) * (1 / k), y: (bounds.top - parentBounds.top) * (1 / k) }, dimensions); - }); -}; - -var storeModel = { - 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: false, - nodesSelectionActive: false, - selectionActive: false, - selection: null, - userSelectionRect: { - startX: 0, - startY: 0, - x: 0, - y: 0, - width: 0, - height: 0, - draw: false, - }, - connectionSourceId: null, - connectionPosition: { x: 0, y: 0 }, - snapGrid: [16, 16], - snapToGrid: false, - isInteractive: true, - onConnect: function () { }, - setOnConnect: action(function (state, onConnect) { - state.onConnect = onConnect; - }), - setNodes: action(function (state, nodes) { - state.nodes = nodes; - }), - setEdges: action(function (state, edges) { - state.edges = edges; - }), - updateNodeDimensions: action(function (state, _a) { - var id = _a.id, nodeElement = _a.nodeElement; - var bounds = nodeElement.getBoundingClientRect(); - var dimensions = getDimensions(nodeElement); - var matchingNode = state.nodes.find(function (n) { return n.id === id; }); - // only update when size change - if (!matchingNode || - (matchingNode.__rg.width === dimensions.width && matchingNode.__rg.height === dimensions.height)) { - return; - } - var handleBounds = { - source: getHandleBounds('.source', nodeElement, bounds, state.transform[2]), - target: getHandleBounds('.target', nodeElement, bounds, state.transform[2]), - }; - state.nodes.forEach(function (n) { - if (n.id === id) { - n.__rg = __assign(__assign(__assign({}, n.__rg), dimensions), { handleBounds: handleBounds }); - } - }); - }), - updateNodePos: action(function (state, _a) { - var id = _a.id, pos = _a.pos; - var position = pos; - if (state.snapToGrid) { - var transformedGridSizeX = state.snapGrid[0] * state.transform[2]; - var transformedGridSizeY = state.snapGrid[1] * state.transform[2]; - position = { - x: transformedGridSizeX * Math.round(pos.x / transformedGridSizeX), - y: transformedGridSizeY * Math.round(pos.y / transformedGridSizeY), - }; - } - state.nodes.forEach(function (n) { - if (n.id === id) { - n.__rg = __assign(__assign({}, n.__rg), { position: position }); - } - }); - }), - setUserSelection: action(function (state, mousePos) { - state.userSelectionRect = { - width: 0, - height: 0, - startX: mousePos.x, - startY: mousePos.y, - x: mousePos.x, - y: mousePos.y, - draw: true, - }; - state.selectionActive = true; - }), - updateUserSelection: action(function (state, mousePos) { - var startX = state.userSelectionRect.startX || 0; - var startY = state.userSelectionRect.startY || 0; - var negativeX = mousePos.x < startX; - var negativeY = mousePos.y < startY; - var nextRect = __assign(__assign({}, state.userSelectionRect), { x: negativeX ? mousePos.x : state.userSelectionRect.x, y: negativeY ? mousePos.y : state.userSelectionRect.y, width: negativeX ? startX - mousePos.x : mousePos.x - startX, height: negativeY ? startY - mousePos.y : mousePos.y - startY }); - var selectedNodes = getNodesInside(state.nodes, nextRect, state.transform); - var selectedEdges = getConnectedEdges(selectedNodes, state.edges); - var nextSelectedElements = __spreadArrays(selectedNodes, selectedEdges); - var selectedElementsUpdated = !fastDeepEqual(nextSelectedElements, state.selectedElements); - state.selection = nextRect; - state.selectedElements = selectedElementsUpdated ? nextSelectedElements : state.selectedElements; - state.userSelectionRect = nextRect; - }), - unsetUserSelection: action(function (state) { - var selectedNodes = getNodesInside(state.nodes, state.userSelectionRect, state.transform); - if (!selectedNodes.length) { - state.selectionActive = false; - state.userSelectionRect = __assign(__assign({}, state.userSelectionRect), { draw: false }); - state.nodesSelectionActive = false; - state.selectedElements = []; - return; - } - var selectedNodesBbox = getRectOfNodes(selectedNodes); - state.selection = state.userSelectionRect; - state.nodesSelectionActive = true; - state.selectedNodesBbox = selectedNodesBbox; - state.userSelectionRect = __assign(__assign({}, state.userSelectionRect), { draw: false }); - state.selectionActive = false; - }), - setSelection: action(function (state, isActive) { - state.selectionActive = isActive; - }), - setNodesSelection: action(function (state, _a) { - var isActive = _a.isActive, selection = _a.selection; - if (!isActive || typeof selection === 'undefined') { - state.nodesSelectionActive = false; - state.selectedElements = []; - return; - } - var selectedNodes = getNodesInside(state.nodes, selection, state.transform); - if (!selectedNodes.length) { - state.nodesSelectionActive = false; - state.selectedElements = []; - return; - } - var selectedNodesBbox = getRectOfNodes(selectedNodes); - state.selection = selection; - state.nodesSelectionActive = true; - state.selectedNodesBbox = selectedNodesBbox; - }), - setSelectedElements: action(function (state, elements) { - var selectedElementsArr = Array.isArray(elements) ? elements : [elements]; - var selectedElementsUpdated = !fastDeepEqual(selectedElementsArr, state.selectedElements); - var selectedElements = selectedElementsUpdated ? selectedElementsArr : state.selectedElements; - state.selectedElements = selectedElements; - }), - updateSelection: action(function (state, selection) { - var selectedNodes = getNodesInside(state.nodes, selection, state.transform); - var selectedEdges = getConnectedEdges(selectedNodes, state.edges); - var nextSelectedElements = __spreadArrays(selectedNodes, selectedEdges); - var selectedElementsUpdated = !fastDeepEqual(nextSelectedElements, state.selectedElements); - state.selection = selection; - state.selectedElements = selectedElementsUpdated ? nextSelectedElements : state.selectedElements; - }), - updateTransform: action(function (state, transform) { - state.transform = [transform.x, transform.y, transform.k]; - }), - updateSize: action(function (state, size) { - state.width = size.width; - state.height = size.height; - }), - initD3: action(function (state, _a) { - var zoom = _a.zoom, selection = _a.selection; - state.d3Zoom = zoom; - state.d3Selection = selection; - state.d3Initialised = true; - }), - setConnectionPosition: action(function (state, position) { - state.connectionPosition = position; - }), - setConnectionSourceId: action(function (state, sourceId) { - state.connectionSourceId = sourceId; - }), - setSnapGrid: action(function (state, _a) { - var snapToGrid = _a.snapToGrid, snapGrid = _a.snapGrid; - state.snapToGrid = snapToGrid; - state.snapGrid = snapGrid; - }), - setInteractive: action(function (state, isInteractive) { - state.isInteractive = isInteractive; - }), -}; -var store = createStore$1(storeModel); - -var isEdge = function (element) { - return element.hasOwnProperty('source') && element.hasOwnProperty('target'); -}; -var isNode = function (element) { - return !element.hasOwnProperty('source') && !element.hasOwnProperty('target'); -}; -var getOutgoers = function (node, elements) { - if (!isNode(node)) { - return []; - } - var outgoerIds = elements.filter(function (e) { return e.source === node.id; }).map(function (e) { return e.target; }); - return elements.filter(function (e) { return outgoerIds.includes(e.id); }); -}; -var removeElements = function (elementsToRemove, elements) { - var nodeIdsToRemove = elementsToRemove.map(function (n) { return n.id; }); - return elements.filter(function (element) { - var edgeElement = element; - return !(nodeIdsToRemove.includes(element.id) || - nodeIdsToRemove.includes(edgeElement.target) || - nodeIdsToRemove.includes(edgeElement.source)); - }); -}; -var getEdgeId = function (_a) { - var source = _a.source, target = _a.target; - return "reactflow__edge-" + source + "-" + target; -}; -var addEdge = function (edgeParams, elements) { - if (!edgeParams.source || !edgeParams.target) { - throw new Error('Can not create edge. An edge needs a source and a target'); - } - return elements.concat(__assign(__assign({}, edgeParams), { id: typeof edgeParams.id !== 'undefined' ? edgeParams.id : getEdgeId(edgeParams) })); -}; -var pointToRendererPoint = function (_a, _b, snapToGrid, _c) { - var x = _a.x, y = _a.y; - var tx = _b[0], ty = _b[1], tScale = _b[2]; - var snapX = _c[0], snapY = _c[1]; - var position = { - x: (x - tx) / tScale, - y: (y - ty) / tScale, - }; - if (snapToGrid) { - var transformedGridSizeX = snapX * tScale; - var transformedGridSizeY = snapY * tScale; - return { - x: transformedGridSizeX * Math.round(position.x / transformedGridSizeX), - y: transformedGridSizeY * Math.round(position.y / transformedGridSizeY), - }; - } - return position; -}; -var parseElement = function (element, transform, snapToGrid, snapGrid) { - if (!element.id) { - throw new Error('All elements (nodes and edges) need to have an id.'); - } - if (isEdge(element)) { - return __assign(__assign({}, element), { id: element.id.toString(), type: element.type || 'default' }); - } - var nodeElement = element; - return __assign(__assign({}, nodeElement), { id: nodeElement.id.toString(), type: nodeElement.type || 'default', __rg: { - position: pointToRendererPoint(nodeElement.position, transform, snapToGrid, snapGrid), - width: null, - height: null, - handleBounds: {}, - } }); -}; -var getBoundsOfBoxes = function (box1, box2) { return ({ - x: Math.min(box1.x, box2.x), - y: Math.min(box1.y, box2.y), - x2: Math.max(box1.x2, box2.x2), - y2: Math.max(box1.y2, box2.y2), -}); }; -var rectToBox = function (_a) { - var x = _a.x, y = _a.y, width = _a.width, height = _a.height; - return ({ - x: x, - y: y, - x2: x + width, - y2: y + height, - }); -}; -var boxToRect = function (_a) { - var x = _a.x, y = _a.y, x2 = _a.x2, y2 = _a.y2; - return ({ - x: x, - y: y, - width: x2 - x, - height: y2 - y, - }); -}; -var getBoundsofRects = function (rect1, rect2) { - return boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2))); -}; -var getRectOfNodes = function (nodes) { - var box = nodes.reduce(function (currBox, _a) { - var _b = _a.__rg, position = _b.position, width = _b.width, height = _b.height; - return getBoundsOfBoxes(currBox, rectToBox(__assign(__assign({}, position), { width: width, height: height }))); - }, { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity }); - return boxToRect(box); -}; -var getNodesInside = function (nodes, rect, _a, partially) { - var _b = _a === void 0 ? [0, 0, 1] : _a, tx = _b[0], ty = _b[1], tScale = _b[2]; - if (partially === void 0) { partially = false; } - var rBox = rectToBox({ - x: (rect.x - tx) / tScale, - y: (rect.y - ty) / tScale, - width: rect.width / tScale, - height: rect.height / tScale, - }); - return nodes.filter(function (_a) { - var _b = _a.__rg, position = _b.position, width = _b.width, height = _b.height; - var nBox = rectToBox(__assign(__assign({}, position), { width: width, height: height })); - var xOverlap = Math.max(0, Math.min(rBox.x2, nBox.x2) - Math.max(rBox.x, nBox.x)); - var yOverlap = Math.max(0, Math.min(rBox.y2, nBox.y2) - Math.max(rBox.y, nBox.y)); - var overlappingArea = xOverlap * yOverlap; - if (partially) { - return overlappingArea >= 0; - } - var area = width * height; - return overlappingArea >= area; - }); -}; -var getConnectedEdges = function (nodes, edges) { - var nodeIds = nodes.map(function (n) { return n.id; }); - return edges.filter(function (e) { - var sourceId = e.source.split('__')[0]; - var targetId = e.target.split('__')[0]; - return nodeIds.includes(sourceId) || nodeIds.includes(targetId); - }); -}; -var fitView = function (_a) { - var padding = (_a === void 0 ? { padding: 0.1 } : _a).padding; - var _b = store.getState(), nodes = _b.nodes, width = _b.width, height = _b.height, d3Selection = _b.d3Selection, d3Zoom = _b.d3Zoom; - if (!d3Selection || !d3Zoom || !nodes.length) { - return; - } - var bounds = getRectOfNodes(nodes); - var maxBoundsSize = Math.max(bounds.width, bounds.height); - var k = Math.min(width, height) / (maxBoundsSize + maxBoundsSize * padding); - var boundsCenterX = bounds.x + bounds.width / 2; - var boundsCenterY = bounds.y + bounds.height / 2; - var transform = [width / 2 - boundsCenterX * k, height / 2 - boundsCenterY * k]; - var fittedTransform = identity$1.translate(transform[0], transform[1]).scale(k); - d3Selection.call(d3Zoom.transform, fittedTransform); -}; -var zoom$1 = function (amount) { - var _a = store.getState(), d3Zoom = _a.d3Zoom, d3Selection = _a.d3Selection, transform = _a.transform; - if (d3Zoom && d3Selection) { - d3Zoom.scaleTo(d3Selection, transform[2] + amount); - } -}; -var zoomIn = function () { return zoom$1(0.2); }; -var zoomOut = function () { return zoom$1(-0.2); }; - -function renderNode(node, props, transform, selectedElements, isInteractive) { - var nodeType = node.type || 'default'; - var NodeComponent = (props.nodeTypes[nodeType] || props.nodeTypes.default); - if (!props.nodeTypes[nodeType]) { - console.warn("No node type found for type \"" + nodeType + "\". Using fallback type \"default\"."); - } - var isSelected = selectedElements.some(function (_a) { - var id = _a.id; - return id === node.id; - }); - return (React__default.createElement(NodeComponent, { key: node.id, id: node.id, type: nodeType, data: node.data, xPos: node.__rg.position.x, yPos: node.__rg.position.y, onClick: props.onElementClick, onNodeDragStop: props.onNodeDragStop, transform: transform, selected: isSelected, style: node.style, isInteractive: isInteractive, sourcePosition: node.sourcePosition, targetPosition: node.targetPosition })); -} -var NodeRenderer = memo(function (_a) { - var _b = _a.onlyRenderVisibleNodes, onlyRenderVisibleNodes = _b === void 0 ? true : _b, props = __rest(_a, ["onlyRenderVisibleNodes"]); - var _c = useStoreState$1(function (s) { return ({ - nodes: s.nodes, - transform: s.transform, - selectedElements: s.selectedElements, - width: s.width, - height: s.height, - isInteractive: s.isInteractive, - }); }), nodes = _c.nodes, transform = _c.transform, selectedElements = _c.selectedElements, width = _c.width, height = _c.height, isInteractive = _c.isInteractive; - var tx = transform[0], ty = transform[1], tScale = transform[2]; - var transformStyle = { - transform: "translate(" + tx + "px," + ty + "px) scale(" + tScale + ")", - }; - var renderNodes = onlyRenderVisibleNodes - ? getNodesInside(nodes, { x: 0, y: 0, width: width, height: height }, transform, true) - : nodes; - return (React__default.createElement("div", { className: "react-flow__nodes", style: transformStyle }, renderNodes.map(function (node) { return renderNode(node, props, transform, selectedElements, isInteractive); }))); -}); -NodeRenderer.displayName = 'NodeRenderer'; - -var ConnectionLine = (function (_a) { - var connectionSourceId = _a.connectionSourceId, _b = _a.connectionLineStyle, connectionLineStyle = _b === void 0 ? {} : _b, connectionPositionX = _a.connectionPositionX, connectionPositionY = _a.connectionPositionY, connectionLineType = _a.connectionLineType, _c = _a.nodes, nodes = _c === void 0 ? [] : _c, className = _a.className, transform = _a.transform, isInteractive = _a.isInteractive; - var _d = useState(null), sourceNode = _d[0], setSourceNode = _d[1]; - var hasHandleId = connectionSourceId.includes('__'); - var sourceIdSplitted = connectionSourceId.split('__'); - var nodeId = sourceIdSplitted[0]; - var handleId = hasHandleId ? sourceIdSplitted[1] : null; - useEffect(function () { - var nextSourceNode = nodes.find(function (n) { return n.id === nodeId; }) || null; - setSourceNode(nextSourceNode); - }, []); - if (!sourceNode || !isInteractive) { - return null; - } - var edgeClasses = classnames('react-flow__edge', 'connection', className); - var hasSource = sourceNode.__rg.handleBounds.source !== null; - // output nodes don't have source handles so we need to use the target one - var handleKey = hasSource ? 'source' : 'target'; - var sourceHandle = handleId - ? sourceNode.__rg.handleBounds[handleKey].find(function (d) { return d.id === handleId; }) - : sourceNode.__rg.handleBounds[handleKey][0]; - var sourceHandleX = sourceHandle ? sourceHandle.x + sourceHandle.width / 2 : sourceNode.__rg.width / 2; - var sourceHandleY = sourceHandle ? sourceHandle.y + sourceHandle.height / 2 : sourceNode.__rg.height; - var sourceX = sourceNode.__rg.position.x + sourceHandleX; - var sourceY = sourceNode.__rg.position.y + sourceHandleY; - var targetX = (connectionPositionX - transform[0]) * (1 / transform[2]); - var targetY = (connectionPositionY - transform[1]) * (1 / transform[2]); - var dAttr = ''; - if (connectionLineType === 'bezier') { - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - dAttr = "M" + sourceX + "," + sourceY + " C" + sourceX + "," + centerY + " " + targetX + "," + centerY + " " + targetX + "," + targetY; - } - else { - dAttr = "M" + sourceX + "," + sourceY + " " + targetX + "," + targetY; - } - return (React__default.createElement("g", { className: edgeClasses }, - React__default.createElement("path", __assign({ d: dAttr }, connectionLineStyle)))); -}); - -var Position; -(function (Position) { - Position["Left"] = "left"; - Position["Top"] = "top"; - Position["Right"] = "right"; - Position["Bottom"] = "bottom"; -})(Position || (Position = {})); -var GridType; -(function (GridType) { - GridType["Lines"] = "lines"; - GridType["Dots"] = "dots"; -})(GridType || (GridType = {})); - -function getHandlePosition(position, node, handle) { - if (handle === void 0) { handle = null; } - if (!handle) { - switch (position) { - case Position.Top: - return { - x: node.__rg.width / 2, - y: 0, - }; - case Position.Right: - return { - x: node.__rg.width, - y: node.__rg.height / 2, - }; - case Position.Bottom: - return { - x: node.__rg.width / 2, - y: node.__rg.height, - }; - case Position.Left: - return { - x: 0, - y: node.__rg.height / 2, - }; - } - } - switch (position) { - case Position.Top: - return { - x: handle.x + handle.width / 2, - y: handle.y, - }; - case Position.Right: - return { - x: handle.x + handle.width, - y: handle.y + handle.height / 2, - }; - case Position.Bottom: - return { - x: handle.x + handle.width / 2, - y: handle.y + handle.height, - }; - case Position.Left: - return { - x: handle.x, - y: handle.y + handle.height / 2, - }; - } -} -function getHandle(bounds, handleId) { - var handle = null; - if (!bounds) { - return null; - } - // there is no handleId when there are no multiple handles/ handles with ids - // so we just pick the first one - if (bounds.length === 1 || !handleId) { - handle = bounds[0]; - } - else if (handleId) { - handle = bounds.find(function (d) { return d.id === handleId; }); - } - return handle; -} -function getEdgePositions(sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition) { - var sourceHandlePos = getHandlePosition(sourcePosition, sourceNode, sourceHandle); - var sourceX = sourceNode.__rg.position.x + sourceHandlePos.x; - var sourceY = sourceNode.__rg.position.y + sourceHandlePos.y; - var targetHandlePos = getHandlePosition(targetPosition, targetNode, targetHandle); - var targetX = targetNode.__rg.position.x + targetHandlePos.x; - var targetY = targetNode.__rg.position.y + targetHandlePos.y; - return { - sourceX: sourceX, - sourceY: sourceY, - targetX: targetX, - targetY: targetY, - }; -} -function renderEdge(edge, props, nodes, selectedElements, isInteractive) { - var _a = edge.source.split('__'), sourceId = _a[0], sourceHandleId = _a[1]; - var _b = edge.target.split('__'), targetId = _b[0], targetHandleId = _b[1]; - var sourceNode = nodes.find(function (n) { return n.id === sourceId; }); - var targetNode = nodes.find(function (n) { return n.id === targetId; }); - if (!sourceNode) { - throw new Error("couldn't create edge for source id: " + sourceId); - } - if (!targetNode) { - throw new Error("couldn't create edge for target id: " + targetId); - } - if (!sourceNode.__rg.width || !sourceNode.__rg.height) { - return null; - } - var edgeType = edge.type || 'default'; - var EdgeComponent = props.edgeTypes[edgeType] || props.edgeTypes.default; - var sourceHandle = getHandle(sourceNode.__rg.handleBounds.source, sourceHandleId); - var targetHandle = getHandle(targetNode.__rg.handleBounds.target, targetHandleId); - var sourcePosition = sourceHandle ? sourceHandle.position : Position.Bottom; - var targetPosition = targetHandle ? targetHandle.position : Position.Top; - var _c = getEdgePositions(sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition), sourceX = _c.sourceX, sourceY = _c.sourceY, targetX = _c.targetX, targetY = _c.targetY; - var isSelected = selectedElements.some(function (elm) { return isEdge(elm) && elm.source === sourceId && elm.target === targetId; }); - return (React__default.createElement(EdgeComponent, { key: edge.id, id: edge.id, type: edge.type, onClick: props.onElementClick, selected: isSelected, animated: edge.animated, style: edge.style, source: sourceId, target: targetId, sourceHandleId: sourceHandleId, targetHandleId: targetHandleId, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, isInteractive: isInteractive })); -} -var EdgeRenderer = memo(function (props) { - var _a = useStoreState$1(function (s) { return ({ - transform: s.transform, - edges: s.edges, - nodes: s.nodes, - connectionSourceId: s.connectionSourceId, - connectionPosition: s.connectionPosition, - selectedElements: s.selectedElements, - isInteractive: s.isInteractive, - }); }), transform = _a.transform, edges = _a.edges, nodes = _a.nodes, connectionSourceId = _a.connectionSourceId, _b = _a.connectionPosition, x = _b.x, y = _b.y, selectedElements = _a.selectedElements, isInteractive = _a.isInteractive; - var width = props.width, height = props.height, connectionLineStyle = props.connectionLineStyle, connectionLineType = props.connectionLineType; - if (!width) { - return null; - } - var tx = transform[0], ty = transform[1], tScale = transform[2]; - var transformStyle = "translate(" + tx + "," + ty + ") scale(" + tScale + ")"; - return (React__default.createElement("svg", { width: width, height: height, className: "react-flow__edges" }, - React__default.createElement("g", { transform: transformStyle }, - edges.map(function (e) { return renderEdge(e, props, nodes, selectedElements, isInteractive); }), - connectionSourceId && (React__default.createElement(ConnectionLine, { nodes: nodes, connectionSourceId: connectionSourceId, connectionPositionX: x, connectionPositionY: y, transform: transform, connectionLineStyle: connectionLineStyle, connectionLineType: connectionLineType, isInteractive: isInteractive }))))); -}); -EdgeRenderer.displayName = 'EdgeRenderer'; - -/** - * The user selection rectangle gets displayed when a user drags the mouse while pressing shift - */ -function getMousePosition(evt) { - var reactFlowNode = document.querySelector('.react-flow'); - if (!reactFlowNode) { - return; - } - var containerBounds = reactFlowNode.getBoundingClientRect(); - return { - x: evt.clientX - containerBounds.left, - y: evt.clientY - containerBounds.top, - }; -} -var SelectionRect = function () { - var userSelectionRect = useStoreState$1(function (s) { return s.userSelectionRect; }); - if (!userSelectionRect.draw) { - return null; - } - return (React__default.createElement("div", { className: "react-flow__selection", style: { - width: userSelectionRect.width, - height: userSelectionRect.height, - transform: "translate(" + userSelectionRect.x + "px, " + userSelectionRect.y + "px)", - } })); -}; -var UserSelection = memo(function (_a) { - var isInteractive = _a.isInteractive; - var _b = useStoreActions$1(function (a) { return ({ - setUserSelection: a.setUserSelection, - updateUserSelection: a.updateUserSelection, - unsetUserSelection: a.unsetUserSelection, - }); }), setUserSelection = _b.setUserSelection, updateUserSelection = _b.updateUserSelection, unsetUserSelection = _b.unsetUserSelection; - if (!isInteractive) { - return null; - } - function onMouseDown(evt) { - var mousePos = getMousePosition(evt); - if (!mousePos) { - return; - } - setUserSelection(mousePos); - } - function onMouseMove(evt) { - var mousePos = getMousePosition(evt); - if (!mousePos) { - return; - } - updateUserSelection(mousePos); - } - function onMouseUp() { - unsetUserSelection(); - } - return (React__default.createElement("div", { className: "react-flow__selectionpane", onMouseDown: onMouseDown, onMouseMove: onMouseMove, onMouseUp: onMouseUp }, - React__default.createElement(SelectionRect, null))); -}); - -var reactIs_development = createCommonjsModule(function (module, exports) { - - - -{ - (function() { - -Object.defineProperty(exports, '__esModule', { value: true }); - -// The Symbol used to tag the ReactElement-like types. If there is no native Symbol -// nor polyfill, then a plain number is used for performance. -var hasSymbol = typeof Symbol === 'function' && Symbol.for; -var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; -var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; -var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; -var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; -var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; -var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; -var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary -// (unstable) APIs that have been removed. Can we remove the symbols? - -var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; -var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; -var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; -var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; -var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; -var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; -var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; -var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; -var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; -var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; - -function isValidElementType(type) { - return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. - type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE); -} - -/** - * Forked from fbjs/warning: - * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js - * - * Only change is we use console.warn instead of console.error, - * and do nothing when 'console' is not supported. - * This really simplifies the code. - * --- - * Similar to invariant but only logs a warning if the condition is not met. - * This can be used to log issues in development environments in critical - * paths. Removing the logging code for production environments will keep the - * same logic and follow the same code paths. - */ -var lowPriorityWarningWithoutStack = function () {}; - -{ - var printWarning = function (format) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - var argIndex = 0; - var message = 'Warning: ' + format.replace(/%s/g, function () { - return args[argIndex++]; - }); - - if (typeof console !== 'undefined') { - console.warn(message); - } - - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; - - lowPriorityWarningWithoutStack = function (condition, format) { - if (format === undefined) { - throw new Error('`lowPriorityWarningWithoutStack(condition, format, ...args)` requires a warning ' + 'message argument'); - } - - if (!condition) { - for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { - args[_key2 - 2] = arguments[_key2]; - } - - printWarning.apply(void 0, [format].concat(args)); - } - }; -} - -var lowPriorityWarningWithoutStack$1 = lowPriorityWarningWithoutStack; - -function typeOf(object) { - if (typeof object === 'object' && object !== null) { - var $$typeof = object.$$typeof; - - switch ($$typeof) { - case REACT_ELEMENT_TYPE: - var type = object.type; - - switch (type) { - case REACT_ASYNC_MODE_TYPE: - case REACT_CONCURRENT_MODE_TYPE: - case REACT_FRAGMENT_TYPE: - case REACT_PROFILER_TYPE: - case REACT_STRICT_MODE_TYPE: - case REACT_SUSPENSE_TYPE: - return type; - - default: - var $$typeofType = type && type.$$typeof; - - switch ($$typeofType) { - case REACT_CONTEXT_TYPE: - case REACT_FORWARD_REF_TYPE: - case REACT_PROVIDER_TYPE: - return $$typeofType; - - default: - return $$typeof; - } - - } - - case REACT_LAZY_TYPE: - case REACT_MEMO_TYPE: - case REACT_PORTAL_TYPE: - return $$typeof; - } - } - - return undefined; -} // AsyncMode is deprecated along with isAsyncMode - -var AsyncMode = REACT_ASYNC_MODE_TYPE; -var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; -var ContextConsumer = REACT_CONTEXT_TYPE; -var ContextProvider = REACT_PROVIDER_TYPE; -var Element = REACT_ELEMENT_TYPE; -var ForwardRef = REACT_FORWARD_REF_TYPE; -var Fragment = REACT_FRAGMENT_TYPE; -var Lazy = REACT_LAZY_TYPE; -var Memo = REACT_MEMO_TYPE; -var Portal = REACT_PORTAL_TYPE; -var Profiler = REACT_PROFILER_TYPE; -var StrictMode = REACT_STRICT_MODE_TYPE; -var Suspense = REACT_SUSPENSE_TYPE; -var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated - -function isAsyncMode(object) { - { - if (!hasWarnedAboutDeprecatedIsAsyncMode) { - hasWarnedAboutDeprecatedIsAsyncMode = true; - lowPriorityWarningWithoutStack$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); - } - } - - return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; -} -function isConcurrentMode(object) { - return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; -} -function isContextConsumer(object) { - return typeOf(object) === REACT_CONTEXT_TYPE; -} -function isContextProvider(object) { - return typeOf(object) === REACT_PROVIDER_TYPE; -} -function isElement(object) { - return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; -} -function isForwardRef(object) { - return typeOf(object) === REACT_FORWARD_REF_TYPE; -} -function isFragment(object) { - return typeOf(object) === REACT_FRAGMENT_TYPE; -} -function isLazy(object) { - return typeOf(object) === REACT_LAZY_TYPE; -} -function isMemo(object) { - return typeOf(object) === REACT_MEMO_TYPE; -} -function isPortal(object) { - return typeOf(object) === REACT_PORTAL_TYPE; -} -function isProfiler(object) { - return typeOf(object) === REACT_PROFILER_TYPE; -} -function isStrictMode(object) { - return typeOf(object) === REACT_STRICT_MODE_TYPE; -} -function isSuspense(object) { - return typeOf(object) === REACT_SUSPENSE_TYPE; -} - -exports.typeOf = typeOf; -exports.AsyncMode = AsyncMode; -exports.ConcurrentMode = ConcurrentMode; -exports.ContextConsumer = ContextConsumer; -exports.ContextProvider = ContextProvider; -exports.Element = Element; -exports.ForwardRef = ForwardRef; -exports.Fragment = Fragment; -exports.Lazy = Lazy; -exports.Memo = Memo; -exports.Portal = Portal; -exports.Profiler = Profiler; -exports.StrictMode = StrictMode; -exports.Suspense = Suspense; -exports.isValidElementType = isValidElementType; -exports.isAsyncMode = isAsyncMode; -exports.isConcurrentMode = isConcurrentMode; -exports.isContextConsumer = isContextConsumer; -exports.isContextProvider = isContextProvider; -exports.isElement = isElement; -exports.isForwardRef = isForwardRef; -exports.isFragment = isFragment; -exports.isLazy = isLazy; -exports.isMemo = isMemo; -exports.isPortal = isPortal; -exports.isProfiler = isProfiler; -exports.isStrictMode = isStrictMode; -exports.isSuspense = isSuspense; - })(); -} -}); - -unwrapExports(reactIs_development); -var reactIs_development_1 = reactIs_development.typeOf; -var reactIs_development_2 = reactIs_development.AsyncMode; -var reactIs_development_3 = reactIs_development.ConcurrentMode; -var reactIs_development_4 = reactIs_development.ContextConsumer; -var reactIs_development_5 = reactIs_development.ContextProvider; -var reactIs_development_6 = reactIs_development.Element; -var reactIs_development_7 = reactIs_development.ForwardRef; -var reactIs_development_8 = reactIs_development.Fragment; -var reactIs_development_9 = reactIs_development.Lazy; -var reactIs_development_10 = reactIs_development.Memo; -var reactIs_development_11 = reactIs_development.Portal; -var reactIs_development_12 = reactIs_development.Profiler; -var reactIs_development_13 = reactIs_development.StrictMode; -var reactIs_development_14 = reactIs_development.Suspense; -var reactIs_development_15 = reactIs_development.isValidElementType; -var reactIs_development_16 = reactIs_development.isAsyncMode; -var reactIs_development_17 = reactIs_development.isConcurrentMode; -var reactIs_development_18 = reactIs_development.isContextConsumer; -var reactIs_development_19 = reactIs_development.isContextProvider; -var reactIs_development_20 = reactIs_development.isElement; -var reactIs_development_21 = reactIs_development.isForwardRef; -var reactIs_development_22 = reactIs_development.isFragment; -var reactIs_development_23 = reactIs_development.isLazy; -var reactIs_development_24 = reactIs_development.isMemo; -var reactIs_development_25 = reactIs_development.isPortal; -var reactIs_development_26 = reactIs_development.isProfiler; -var reactIs_development_27 = reactIs_development.isStrictMode; -var reactIs_development_28 = reactIs_development.isSuspense; - -var reactIs = createCommonjsModule(function (module) { - -{ - module.exports = reactIs_development; -} -}); - -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ -/* eslint-disable no-unused-vars */ -var getOwnPropertySymbols = Object.getOwnPropertySymbols; -var hasOwnProperty = Object.prototype.hasOwnProperty; -var propIsEnumerable = Object.prototype.propertyIsEnumerable; - -function toObject(val) { - if (val === null || val === undefined) { - throw new TypeError('Object.assign cannot be called with null or undefined'); - } - - return Object(val); -} - -function shouldUseNative() { - try { - if (!Object.assign) { - return false; - } - - // Detect buggy property enumeration order in older V8 versions. - - // https://bugs.chromium.org/p/v8/issues/detail?id=4118 - var test1 = new String('abc'); // eslint-disable-line no-new-wrappers - test1[5] = 'de'; - if (Object.getOwnPropertyNames(test1)[0] === '5') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test2 = {}; - for (var i = 0; i < 10; i++) { - test2['_' + String.fromCharCode(i)] = i; - } - var order2 = Object.getOwnPropertyNames(test2).map(function (n) { - return test2[n]; - }); - if (order2.join('') !== '0123456789') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test3 = {}; - 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { - test3[letter] = letter; - }); - if (Object.keys(Object.assign({}, test3)).join('') !== - 'abcdefghijklmnopqrst') { - return false; - } - - return true; - } catch (err) { - // We don't expect any of the above to throw, but better to be safe. - return false; - } -} - -var objectAssign = shouldUseNative() ? Object.assign : function (target, source) { - var from; - var to = toObject(target); - var symbols; - - for (var s = 1; s < arguments.length; s++) { - from = Object(arguments[s]); - - for (var key in from) { - if (hasOwnProperty.call(from, key)) { - to[key] = from[key]; - } - } - - if (getOwnPropertySymbols) { - symbols = getOwnPropertySymbols(from); - for (var i = 0; i < symbols.length; i++) { - if (propIsEnumerable.call(from, symbols[i])) { - to[symbols[i]] = from[symbols[i]]; - } - } - } - } - - return to; -}; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; - -var ReactPropTypesSecret_1 = ReactPropTypesSecret; - -var printWarning = function() {}; - -{ - var ReactPropTypesSecret$1 = ReactPropTypesSecret_1; - var loggedTypeFailures = {}; - var has$1 = Function.call.bind(Object.prototype.hasOwnProperty); - - printWarning = function(text) { - var message = 'Warning: ' + text; - if (typeof console !== 'undefined') { - console.error(message); - } - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; -} - -/** - * Assert that the values match with the type specs. - * Error messages are memorized and will only be shown once. - * - * @param {object} typeSpecs Map of name to a ReactPropType - * @param {object} values Runtime values that need to be type-checked - * @param {string} location e.g. "prop", "context", "child context" - * @param {string} componentName Name of the component for error messages. - * @param {?Function} getStack Returns the component stack. - * @private - */ -function checkPropTypes(typeSpecs, values, location, componentName, getStack) { - { - for (var typeSpecName in typeSpecs) { - if (has$1(typeSpecs, typeSpecName)) { - var error; - // Prop type validation may throw. In case they do, we don't want to - // fail the render phase where it didn't fail before. So we log it. - // After these have been cleaned up, we'll let them throw. - try { - // This is intentionally an invariant that gets caught. It's the same - // behavior as without this statement except with a better message. - if (typeof typeSpecs[typeSpecName] !== 'function') { - var err = Error( - (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + - 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' - ); - err.name = 'Invariant Violation'; - throw err; - } - error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1); - } catch (ex) { - error = ex; - } - if (error && !(error instanceof Error)) { - printWarning( - (componentName || 'React class') + ': type specification of ' + - location + ' `' + typeSpecName + '` is invalid; the type checker ' + - 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + - 'You may have forgotten to pass an argument to the type checker ' + - 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + - 'shape all require an argument).' - ); - } - if (error instanceof Error && !(error.message in loggedTypeFailures)) { - // Only monitor this failure once because there tends to be a lot of the - // same error. - loggedTypeFailures[error.message] = true; - - var stack = getStack ? getStack() : ''; - - printWarning( - 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') - ); - } - } - } - } -} - -/** - * Resets warning cache when testing. - * - * @private - */ -checkPropTypes.resetWarningCache = function() { - { - loggedTypeFailures = {}; - } -}; - -var checkPropTypes_1 = checkPropTypes; - -var has$2 = Function.call.bind(Object.prototype.hasOwnProperty); -var printWarning$1 = function() {}; - -{ - printWarning$1 = function(text) { - var message = 'Warning: ' + text; - if (typeof console !== 'undefined') { - console.error(message); - } - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; -} - -function emptyFunctionThatReturnsNull() { - return null; -} - -var factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) { - /* global Symbol */ - var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; - var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. - - /** - * Returns the iterator method function contained on the iterable object. - * - * Be sure to invoke the function with the iterable as context: - * - * var iteratorFn = getIteratorFn(myIterable); - * if (iteratorFn) { - * var iterator = iteratorFn.call(myIterable); - * ... - * } - * - * @param {?object} maybeIterable - * @return {?function} - */ - function getIteratorFn(maybeIterable) { - var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); - if (typeof iteratorFn === 'function') { - return iteratorFn; - } - } - - /** - * Collection of methods that allow declaration and validation of props that are - * supplied to React components. Example usage: - * - * var Props = require('ReactPropTypes'); - * var MyArticle = React.createClass({ - * propTypes: { - * // An optional string prop named "description". - * description: Props.string, - * - * // A required enum prop named "category". - * category: Props.oneOf(['News','Photos']).isRequired, - * - * // A prop named "dialog" that requires an instance of Dialog. - * dialog: Props.instanceOf(Dialog).isRequired - * }, - * render: function() { ... } - * }); - * - * A more formal specification of how these methods are used: - * - * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) - * decl := ReactPropTypes.{type}(.isRequired)? - * - * Each and every declaration produces a function with the same signature. This - * allows the creation of custom validation functions. For example: - * - * var MyLink = React.createClass({ - * propTypes: { - * // An optional string or URI prop named "href". - * href: function(props, propName, componentName) { - * var propValue = props[propName]; - * if (propValue != null && typeof propValue !== 'string' && - * !(propValue instanceof URI)) { - * return new Error( - * 'Expected a string or an URI for ' + propName + ' in ' + - * componentName - * ); - * } - * } - * }, - * render: function() {...} - * }); - * - * @internal - */ - - var ANONYMOUS = '<>'; - - // Important! - // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. - var ReactPropTypes = { - array: createPrimitiveTypeChecker('array'), - bool: createPrimitiveTypeChecker('boolean'), - func: createPrimitiveTypeChecker('function'), - number: createPrimitiveTypeChecker('number'), - object: createPrimitiveTypeChecker('object'), - string: createPrimitiveTypeChecker('string'), - symbol: createPrimitiveTypeChecker('symbol'), - - any: createAnyTypeChecker(), - arrayOf: createArrayOfTypeChecker, - element: createElementTypeChecker(), - elementType: createElementTypeTypeChecker(), - instanceOf: createInstanceTypeChecker, - node: createNodeChecker(), - objectOf: createObjectOfTypeChecker, - oneOf: createEnumTypeChecker, - oneOfType: createUnionTypeChecker, - shape: createShapeTypeChecker, - exact: createStrictShapeTypeChecker, - }; - - /** - * inlined Object.is polyfill to avoid requiring consumers ship their own - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is - */ - /*eslint-disable no-self-compare*/ - function is(x, y) { - // SameValue algorithm - if (x === y) { - // Steps 1-5, 7-10 - // Steps 6.b-6.e: +0 != -0 - return x !== 0 || 1 / x === 1 / y; - } else { - // Step 6.a: NaN == NaN - return x !== x && y !== y; - } - } - /*eslint-enable no-self-compare*/ - - /** - * We use an Error-like object for backward compatibility as people may call - * PropTypes directly and inspect their output. However, we don't use real - * Errors anymore. We don't inspect their stack anyway, and creating them - * is prohibitively expensive if they are created too often, such as what - * happens in oneOfType() for any type before the one that matched. - */ - function PropTypeError(message) { - this.message = message; - this.stack = ''; - } - // Make `instanceof Error` still work for returned errors. - PropTypeError.prototype = Error.prototype; - - function createChainableTypeChecker(validate) { - { - var manualPropTypeCallCache = {}; - var manualPropTypeWarningCount = 0; - } - function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { - componentName = componentName || ANONYMOUS; - propFullName = propFullName || propName; - - if (secret !== ReactPropTypesSecret_1) { - if (throwOnDirectAccess) { - // New behavior only for users of `prop-types` package - var err = new Error( - 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + - 'Use `PropTypes.checkPropTypes()` to call them. ' + - 'Read more at http://fb.me/use-check-prop-types' - ); - err.name = 'Invariant Violation'; - throw err; - } else if ( typeof console !== 'undefined') { - // Old behavior for people using React.PropTypes - var cacheKey = componentName + ':' + propName; - if ( - !manualPropTypeCallCache[cacheKey] && - // Avoid spamming the console because they are often not actionable except for lib authors - manualPropTypeWarningCount < 3 - ) { - printWarning$1( - 'You are manually calling a React.PropTypes validation ' + - 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + - 'and will throw in the standalone `prop-types` package. ' + - 'You may be seeing this warning due to a third-party PropTypes ' + - 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' - ); - manualPropTypeCallCache[cacheKey] = true; - manualPropTypeWarningCount++; - } - } - } - if (props[propName] == null) { - if (isRequired) { - if (props[propName] === null) { - return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); - } - return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); - } - return null; - } else { - return validate(props, propName, componentName, location, propFullName); - } - } - - var chainedCheckType = checkType.bind(null, false); - chainedCheckType.isRequired = checkType.bind(null, true); - - return chainedCheckType; - } - - function createPrimitiveTypeChecker(expectedType) { - function validate(props, propName, componentName, location, propFullName, secret) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== expectedType) { - // `propValue` being instance of, say, date/regexp, pass the 'object' - // check, but we can offer a more precise error message here rather than - // 'of type `object`'. - var preciseType = getPreciseType(propValue); - - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createAnyTypeChecker() { - return createChainableTypeChecker(emptyFunctionThatReturnsNull); - } - - function createArrayOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== 'function') { - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); - } - var propValue = props[propName]; - if (!Array.isArray(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); - } - for (var i = 0; i < propValue.length; i++) { - var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1); - if (error instanceof Error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createElementTypeChecker() { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - if (!isValidElement(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createElementTypeTypeChecker() { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - if (!reactIs.isValidElementType(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createInstanceTypeChecker(expectedClass) { - function validate(props, propName, componentName, location, propFullName) { - if (!(props[propName] instanceof expectedClass)) { - var expectedClassName = expectedClass.name || ANONYMOUS; - var actualClassName = getClassName(props[propName]); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createEnumTypeChecker(expectedValues) { - if (!Array.isArray(expectedValues)) { - { - if (arguments.length > 1) { - printWarning$1( - 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + - 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' - ); - } else { - printWarning$1('Invalid argument supplied to oneOf, expected an array.'); - } - } - return emptyFunctionThatReturnsNull; - } - - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - for (var i = 0; i < expectedValues.length; i++) { - if (is(propValue, expectedValues[i])) { - return null; - } - } - - var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { - var type = getPreciseType(value); - if (type === 'symbol') { - return String(value); - } - return value; - }); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); - } - return createChainableTypeChecker(validate); - } - - function createObjectOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== 'function') { - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); - } - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); - } - for (var key in propValue) { - if (has$2(propValue, key)) { - var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1); - if (error instanceof Error) { - return error; - } - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createUnionTypeChecker(arrayOfTypeCheckers) { - if (!Array.isArray(arrayOfTypeCheckers)) { - printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') ; - return emptyFunctionThatReturnsNull; - } - - for (var i = 0; i < arrayOfTypeCheckers.length; i++) { - var checker = arrayOfTypeCheckers[i]; - if (typeof checker !== 'function') { - printWarning$1( - 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + - 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' - ); - return emptyFunctionThatReturnsNull; - } - } - - function validate(props, propName, componentName, location, propFullName) { - for (var i = 0; i < arrayOfTypeCheckers.length; i++) { - var checker = arrayOfTypeCheckers[i]; - if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) { - return null; - } - } - - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); - } - return createChainableTypeChecker(validate); - } - - function createNodeChecker() { - function validate(props, propName, componentName, location, propFullName) { - if (!isNode(props[propName])) { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); - } - for (var key in shapeTypes) { - var checker = shapeTypes[key]; - if (!checker) { - continue; - } - var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1); - if (error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createStrictShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); - } - // We need to check all keys in case some are required but missing from - // props. - var allKeys = objectAssign({}, props[propName], shapeTypes); - for (var key in allKeys) { - var checker = shapeTypes[key]; - if (!checker) { - return new PropTypeError( - 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + - '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + - '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') - ); - } - var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1); - if (error) { - return error; - } - } - return null; - } - - return createChainableTypeChecker(validate); - } - - function isNode(propValue) { - switch (typeof propValue) { - case 'number': - case 'string': - case 'undefined': - return true; - case 'boolean': - return !propValue; - case 'object': - if (Array.isArray(propValue)) { - return propValue.every(isNode); - } - if (propValue === null || isValidElement(propValue)) { - return true; - } - - var iteratorFn = getIteratorFn(propValue); - if (iteratorFn) { - var iterator = iteratorFn.call(propValue); - var step; - if (iteratorFn !== propValue.entries) { - while (!(step = iterator.next()).done) { - if (!isNode(step.value)) { - return false; - } - } - } else { - // Iterator will provide entry [k,v] tuples rather than values. - while (!(step = iterator.next()).done) { - var entry = step.value; - if (entry) { - if (!isNode(entry[1])) { - return false; - } - } - } - } - } else { - return false; - } - - return true; - default: - return false; - } - } - - function isSymbol(propType, propValue) { - // Native Symbol. - if (propType === 'symbol') { - return true; - } - - // falsy value can't be a Symbol - if (!propValue) { - return false; - } - - // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' - if (propValue['@@toStringTag'] === 'Symbol') { - return true; - } - - // Fallback for non-spec compliant Symbols which are polyfilled. - if (typeof Symbol === 'function' && propValue instanceof Symbol) { - return true; - } - - return false; - } - - // Equivalent of `typeof` but with special handling for array and regexp. - function getPropType(propValue) { - var propType = typeof propValue; - if (Array.isArray(propValue)) { - return 'array'; - } - if (propValue instanceof RegExp) { - // Old webkits (at least until Android 4.0) return 'function' rather than - // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ - // passes PropTypes.object. - return 'object'; - } - if (isSymbol(propType, propValue)) { - return 'symbol'; - } - return propType; - } - - // This handles more types than `getPropType`. Only used for error messages. - // See `createPrimitiveTypeChecker`. - function getPreciseType(propValue) { - if (typeof propValue === 'undefined' || propValue === null) { - return '' + propValue; - } - var propType = getPropType(propValue); - if (propType === 'object') { - if (propValue instanceof Date) { - return 'date'; - } else if (propValue instanceof RegExp) { - return 'regexp'; - } - } - return propType; - } - - // Returns a string that is postfixed to a warning about an invalid type. - // For example, "undefined" or "of type array" - function getPostfixForTypeWarning(value) { - var type = getPreciseType(value); - switch (type) { - case 'array': - case 'object': - return 'an ' + type; - case 'boolean': - case 'date': - case 'regexp': - return 'a ' + type; - default: - return type; - } - } - - // Returns class name of the object, if any. - function getClassName(propValue) { - if (!propValue.constructor || !propValue.constructor.name) { - return ANONYMOUS; - } - return propValue.constructor.name; - } - - ReactPropTypes.checkPropTypes = checkPropTypes_1; - ReactPropTypes.resetWarningCache = checkPropTypes_1.resetWarningCache; - ReactPropTypes.PropTypes = ReactPropTypes; - - return ReactPropTypes; -}; - -var propTypes = createCommonjsModule(function (module) { -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -{ - var ReactIs = reactIs; - - // By explicitly using `prop-types` you are opting into new development behavior. - // http://fb.me/prop-types-in-prod - var throwOnDirectAccess = true; - module.exports = factoryWithTypeCheckers(ReactIs.isElement, throwOnDirectAccess); -} -}); - -// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc -function findInArray(array -/*: Array | TouchList*/ -, callback -/*: Function*/ -) -/*: any*/ -{ - for (let i = 0, length = array.length; i < length; i++) { - if (callback.apply(callback, [array[i], i, array])) return array[i]; - } -} -function isFunction(func -/*: any*/ -) -/*: boolean*/ -{ - return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]'; -} -function isNum(num -/*: any*/ -) -/*: boolean*/ -{ - return typeof num === 'number' && !isNaN(num); -} -function int(a -/*: string*/ -) -/*: number*/ -{ - return parseInt(a, 10); -} -function dontSetMe(props -/*: Object*/ -, propName -/*: string*/ -, componentName -/*: string*/ -) { - if (props[propName]) { - return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`); - } -} - -const prefixes = ['Moz', 'Webkit', 'O', 'ms']; -function getPrefix(prop -/*: string*/ -= 'transform') -/*: string*/ -{ - // Checking specifically for 'window.document' is for pseudo-browser server-side - // environments that define 'window' as the global context. - // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84) - if (typeof window === 'undefined' || typeof window.document === 'undefined') return ''; - const style = window.document.documentElement.style; - if (prop in style) return ''; - - for (let i = 0; i < prefixes.length; i++) { - if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i]; - } - - return ''; -} -function browserPrefixToKey(prop -/*: string*/ -, prefix -/*: string*/ -) -/*: string*/ -{ - return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop; -} - -function kebabToTitleCase(str -/*: string*/ -) -/*: string*/ -{ - let out = ''; - let shouldCapitalize = true; - - for (let i = 0; i < str.length; i++) { - if (shouldCapitalize) { - out += str[i].toUpperCase(); - shouldCapitalize = false; - } else if (str[i] === '-') { - shouldCapitalize = true; - } else { - out += str[i]; - } - } - - return out; -} // Default export is the prefix itself, like 'Moz', 'Webkit', etc -// Note that you may have to re-test for certain things; for instance, Chrome 50 -// can handle unprefixed `transform`, but not unprefixed `user-select` - - -var browserPrefix = getPrefix(); - -/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/ - -let matchesSelectorFunc = ''; -function matchesSelector(el -/*: Node*/ -, selector -/*: string*/ -) -/*: boolean*/ -{ - if (!matchesSelectorFunc) { - matchesSelectorFunc = findInArray(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) { - // $FlowIgnore: Doesn't think elements are indexable - return isFunction(el[method]); - }); - } // Might not be found entirely (not an Element?) - in that case, bail - // $FlowIgnore: Doesn't think elements are indexable - - - if (!isFunction(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable - - return el[matchesSelectorFunc](selector); -} // Works up the tree to the draggable itself attempting to match selector. - -function matchesSelectorAndParentsTo(el -/*: Node*/ -, selector -/*: string*/ -, baseNode -/*: Node*/ -) -/*: boolean*/ -{ - let node = el; - - do { - if (matchesSelector(node, selector)) return true; - if (node === baseNode) return false; - node = node.parentNode; - } while (node); - - return false; -} -function addEvent(el -/*: ?Node*/ -, event -/*: string*/ -, handler -/*: Function*/ -, inputOptions -/*: Object*/ -) -/*: void*/ -{ - if (!el) return; - const options = { - capture: true, - ...inputOptions - }; - - if (el.addEventListener) { - el.addEventListener(event, handler, options); - } else if (el.attachEvent) { - el.attachEvent('on' + event, handler); - } else { - // $FlowIgnore: Doesn't think elements are indexable - el['on' + event] = handler; - } -} -function removeEvent(el -/*: ?Node*/ -, event -/*: string*/ -, handler -/*: Function*/ -, inputOptions -/*: Object*/ -) -/*: void*/ -{ - if (!el) return; - const options = { - capture: true, - ...inputOptions - }; - - if (el.removeEventListener) { - el.removeEventListener(event, handler, options); - } else if (el.detachEvent) { - el.detachEvent('on' + event, handler); - } else { - // $FlowIgnore: Doesn't think elements are indexable - el['on' + event] = null; - } -} -function outerHeight(node -/*: HTMLElement*/ -) -/*: number*/ -{ - // This is deliberately excluding margin for our calculations, since we are using - // offsetTop which is including margin. See getBoundPosition - let height = node.clientHeight; - const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - height += int(computedStyle.borderTopWidth); - height += int(computedStyle.borderBottomWidth); - return height; -} -function outerWidth(node -/*: HTMLElement*/ -) -/*: number*/ -{ - // This is deliberately excluding margin for our calculations, since we are using - // offsetLeft which is including margin. See getBoundPosition - let width = node.clientWidth; - const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - width += int(computedStyle.borderLeftWidth); - width += int(computedStyle.borderRightWidth); - return width; -} -function innerHeight(node -/*: HTMLElement*/ -) -/*: number*/ -{ - let height = node.clientHeight; - const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - height -= int(computedStyle.paddingTop); - height -= int(computedStyle.paddingBottom); - return height; -} -function innerWidth(node -/*: HTMLElement*/ -) -/*: number*/ -{ - let width = node.clientWidth; - const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - width -= int(computedStyle.paddingLeft); - width -= int(computedStyle.paddingRight); - return width; -} // Get from offsetParent - -function offsetXYFromParent(evt -/*: {clientX: number, clientY: number}*/ -, offsetParent -/*: HTMLElement*/ -, scale -/*: number*/ -) -/*: ControlPosition*/ -{ - const isBody = offsetParent === offsetParent.ownerDocument.body; - const offsetParentRect = isBody ? { - left: 0, - top: 0 - } : offsetParent.getBoundingClientRect(); - const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale; - const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale; - return { - x, - y - }; -} -function createCSSTransform(controlPos -/*: ControlPosition*/ -, positionOffset -/*: PositionOffsetControlPosition*/ -) -/*: Object*/ -{ - const translation = getTranslation(controlPos, positionOffset, 'px'); - return { - [browserPrefixToKey('transform', browserPrefix)]: translation - }; -} -function createSVGTransform(controlPos -/*: ControlPosition*/ -, positionOffset -/*: PositionOffsetControlPosition*/ -) -/*: string*/ -{ - const translation = getTranslation(controlPos, positionOffset, ''); - return translation; -} -function getTranslation({ - x, - y -} -/*: ControlPosition*/ -, positionOffset -/*: PositionOffsetControlPosition*/ -, unitSuffix -/*: string*/ -) -/*: string*/ -{ - let translation = `translate(${x}${unitSuffix},${y}${unitSuffix})`; - - if (positionOffset) { - const defaultX = `${typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix}`; - const defaultY = `${typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix}`; - translation = `translate(${defaultX}, ${defaultY})` + translation; - } - - return translation; -} -function getTouch(e -/*: MouseTouchEvent*/ -, identifier -/*: number*/ -) -/*: ?{clientX: number, clientY: number}*/ -{ - return e.targetTouches && findInArray(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && findInArray(e.changedTouches, t => identifier === t.identifier); -} -function getTouchIdentifier(e -/*: MouseTouchEvent*/ -) -/*: ?number*/ -{ - if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier; - if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier; -} // User-select Hacks: -// -// Useful for preventing blue highlights all over everything when dragging. -// Note we're passing `document` b/c we could be iframed - -function addUserSelectStyles(doc -/*: ?Document*/ -) { - if (!doc) return; - let styleEl = doc.getElementById('react-draggable-style-el'); - - if (!styleEl) { - styleEl = doc.createElement('style'); - styleEl.type = 'text/css'; - styleEl.id = 'react-draggable-style-el'; - styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n'; - styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\n'; - doc.getElementsByTagName('head')[0].appendChild(styleEl); - } - - if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection'); -} -function removeUserSelectStyles(doc -/*: ?Document*/ -) { - if (!doc) return; - - try { - if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE - - if (doc.selection) { - // $FlowIgnore: IE - doc.selection.empty(); - } else { - // Remove selection caused by scroll, unless it's a focused input - // (we use doc.defaultView in case we're in an iframe) - const selection = (doc.defaultView || window).getSelection(); - - if (selection && selection.type !== 'Caret') { - selection.removeAllRanges(); - } - } - } catch (e) {// probably IE - } -} -function addClassName(el -/*: HTMLElement*/ -, className -/*: string*/ -) { - if (el.classList) { - el.classList.add(className); - } else { - if (!el.className.match(new RegExp(`(?:^|\\s)${className}(?!\\S)`))) { - el.className += ` ${className}`; - } - } -} -function removeClassName(el -/*: HTMLElement*/ -, className -/*: string*/ -) { - if (el.classList) { - el.classList.remove(className); - } else { - el.className = el.className.replace(new RegExp(`(?:^|\\s)${className}(?!\\S)`, 'g'), ''); - } -} - -/*:: import type Draggable from '../Draggable';*/ - -/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/ - -/*:: import type DraggableCore from '../DraggableCore';*/ - -function getBoundPosition(draggable -/*: Draggable*/ -, x -/*: number*/ -, y -/*: number*/ -) -/*: [number, number]*/ -{ - // If no bounds, short-circuit and move on - if (!draggable.props.bounds) return [x, y]; // Clone new bounds - - let { - bounds - } = draggable.props; - bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds); - const node = findDOMNode(draggable); - - if (typeof bounds === 'string') { - const { - ownerDocument - } = node; - const ownerWindow = ownerDocument.defaultView; - let boundNode; - - if (bounds === 'parent') { - boundNode = node.parentNode; - } else { - boundNode = ownerDocument.querySelector(bounds); - } - - if (!(boundNode instanceof ownerWindow.HTMLElement)) { - throw new Error('Bounds selector "' + bounds + '" could not find an element.'); - } - - const nodeStyle = ownerWindow.getComputedStyle(node); - const boundNodeStyle = ownerWindow.getComputedStyle(boundNode); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right. - - bounds = { - left: -node.offsetLeft + int(boundNodeStyle.paddingLeft) + int(nodeStyle.marginLeft), - top: -node.offsetTop + int(boundNodeStyle.paddingTop) + int(nodeStyle.marginTop), - right: innerWidth(boundNode) - outerWidth(node) - node.offsetLeft + int(boundNodeStyle.paddingRight) - int(nodeStyle.marginRight), - bottom: innerHeight(boundNode) - outerHeight(node) - node.offsetTop + int(boundNodeStyle.paddingBottom) - int(nodeStyle.marginBottom) - }; - } // Keep x and y below right and bottom limits... - - - if (isNum(bounds.right)) x = Math.min(x, bounds.right); - if (isNum(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits. - - if (isNum(bounds.left)) x = Math.max(x, bounds.left); - if (isNum(bounds.top)) y = Math.max(y, bounds.top); - return [x, y]; -} -function snapToGrid(grid -/*: [number, number]*/ -, pendingX -/*: number*/ -, pendingY -/*: number*/ -) -/*: [number, number]*/ -{ - const x = Math.round(pendingX / grid[0]) * grid[0]; - const y = Math.round(pendingY / grid[1]) * grid[1]; - return [x, y]; -} -function canDragX(draggable -/*: Draggable*/ -) -/*: boolean*/ -{ - return draggable.props.axis === 'both' || draggable.props.axis === 'x'; -} -function canDragY(draggable -/*: Draggable*/ -) -/*: boolean*/ -{ - return draggable.props.axis === 'both' || draggable.props.axis === 'y'; -} // Get {x, y} positions from event. - -function getControlPosition(e -/*: MouseTouchEvent*/ -, touchIdentifier -/*: ?number*/ -, draggableCore -/*: DraggableCore*/ -) -/*: ?ControlPosition*/ -{ - const touchObj = typeof touchIdentifier === 'number' ? getTouch(e, touchIdentifier) : null; - if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch - - const node = findDOMNode(draggableCore); // User can provide an offsetParent if desired. - - const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body; - return offsetXYFromParent(touchObj || e, offsetParent, draggableCore.props.scale); -} // Create an data object exposed by 's events - -function createCoreData(draggable -/*: DraggableCore*/ -, x -/*: number*/ -, y -/*: number*/ -) -/*: DraggableData*/ -{ - const state = draggable.state; - const isStart = !isNum(state.lastX); - const node = findDOMNode(draggable); - - if (isStart) { - // If this is our first move, use the x and y as last coords. - return { - node, - deltaX: 0, - deltaY: 0, - lastX: x, - lastY: y, - x, - y - }; - } else { - // Otherwise calculate proper values. - return { - node, - deltaX: x - state.lastX, - deltaY: y - state.lastY, - lastX: state.lastX, - lastY: state.lastY, - x, - y - }; - } -} // Create an data exposed by 's events - -function createDraggableData(draggable -/*: Draggable*/ -, coreData -/*: DraggableData*/ -) -/*: DraggableData*/ -{ - const scale = draggable.props.scale; - return { - node: coreData.node, - x: draggable.state.x + coreData.deltaX / scale, - y: draggable.state.y + coreData.deltaY / scale, - deltaX: coreData.deltaX / scale, - deltaY: coreData.deltaY / scale, - lastX: draggable.state.x, - lastY: draggable.state.y - }; -} // A lot faster than stringify/parse - -function cloneBounds(bounds -/*: Bounds*/ -) -/*: Bounds*/ -{ - return { - left: bounds.left, - top: bounds.top, - right: bounds.right, - bottom: bounds.bottom - }; -} - -function findDOMNode(draggable -/*: Draggable | DraggableCore*/ -) -/*: HTMLElement*/ -{ - const node = ReactDOM.findDOMNode(draggable); - - if (!node) { - throw new Error(': Unmounted during event!'); - } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME - - - return node; -} - -/*eslint no-console:0*/ -function log(...args) { -} - -function _defineProperty$1(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; } -/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/ - -/*:: import type {Element as ReactElement} from 'react';*/ - -// Simple abstraction for dragging events names. -const eventsFor = { - touch: { - start: 'touchstart', - move: 'touchmove', - stop: 'touchend' - }, - mouse: { - start: 'mousedown', - move: 'mousemove', - stop: 'mouseup' - } -}; // Default to mouse events. - -let dragEventFor = eventsFor.mouse; -/*:: type DraggableCoreState = { - dragging: boolean, - lastX: number, - lastY: number, - touchIdentifier: ?number -};*/ - -/*:: export type DraggableBounds = { - left: number, - right: number, - top: number, - bottom: number, -};*/ - -/*:: export type DraggableData = { - node: HTMLElement, - x: number, y: number, - deltaX: number, deltaY: number, - lastX: number, lastY: number, -};*/ - -/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/ - -/*:: export type ControlPosition = {x: number, y: number};*/ - -/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/ - -/*:: export type DraggableCoreProps = { - allowAnyClick: boolean, - cancel: string, - children: ReactElement, - disabled: boolean, - enableUserSelectHack: boolean, - offsetParent: HTMLElement, - grid: [number, number], - handle: string, - onStart: DraggableEventHandler, - onDrag: DraggableEventHandler, - onStop: DraggableEventHandler, - onMouseDown: (e: MouseEvent) => void, - scale: number, -};*/ - -// -// Define . -// -// is for advanced usage of . It maintains minimal internal state so it can -// work well with libraries that require more control over the element. -// -class DraggableCore extends React__default.Component -/*:: */ -{ - constructor(...args) { - super(...args); - - _defineProperty$1(this, "state", { - dragging: false, - // Used while dragging to determine deltas. - lastX: NaN, - lastY: NaN, - touchIdentifier: null - }); - - _defineProperty$1(this, "mounted", false); - - _defineProperty$1(this, "handleDragStart", e => { - // Make it possible to attach event handlers on top of this one. - this.props.onMouseDown(e); // Only accept left-clicks. - - if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed) - - const thisNode = ReactDOM.findDOMNode(this); - - if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) { - throw new Error(' not mounted on DragStart!'); - } - - const { - ownerDocument - } = thisNode; // Short circuit if handle or cancel prop was provided and selector doesn't match. - - if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !matchesSelectorAndParentsTo(e.target, this.props.handle, thisNode) || this.props.cancel && matchesSelectorAndParentsTo(e.target, this.props.cancel, thisNode)) { - return; - } // Prevent scrolling on mobile devices, like ipad/iphone. - // Important that this is after handle/cancel. - - - if (e.type === 'touchstart') e.preventDefault(); // Set touch identifier in component state if this is a touch event. This allows us to - // distinguish between individual touches on multitouch screens by identifying which - // touchpoint was set to this element. - - const touchIdentifier = getTouchIdentifier(e); - this.setState({ - touchIdentifier - }); // Get the current drag point from the event. This is used as the offset. - - const position = getControlPosition(e, touchIdentifier, this); - if (position == null) return; // not possible but satisfies flow - - const { - x, - y - } = position; // Create an event object with all the data parents need to make a decision here. - - const coreEvent = createCoreData(this, x, y); - - log('calling', this.props.onStart); - const shouldUpdate = this.props.onStart(e, coreEvent); - if (shouldUpdate === false || this.mounted === false) return; // Add a style to the body to disable user-select. This prevents text from - // being selected all over the page. - - if (this.props.enableUserSelectHack) addUserSelectStyles(ownerDocument); // Initiate dragging. Set the current x and y as offsets - // so we know how much we've moved during the drag. This allows us - // to drag elements around even if they have been moved, without issue. - - this.setState({ - dragging: true, - lastX: x, - lastY: y - }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of - // this element. We use different events depending on whether or not we have detected that this - // is a touch-capable device. - - addEvent(ownerDocument, dragEventFor.move, this.handleDrag); - addEvent(ownerDocument, dragEventFor.stop, this.handleDragStop); - }); - - _defineProperty$1(this, "handleDrag", e => { - // Get the current drag point from the event. This is used as the offset. - const position = getControlPosition(e, this.state.touchIdentifier, this); - if (position == null) return; - let { - x, - y - } = position; // Snap to grid if prop has been provided - - if (Array.isArray(this.props.grid)) { - let deltaX = x - this.state.lastX, - deltaY = y - this.state.lastY; - [deltaX, deltaY] = snapToGrid(this.props.grid, deltaX, deltaY); - if (!deltaX && !deltaY) return; // skip useless drag - - x = this.state.lastX + deltaX, y = this.state.lastY + deltaY; - } - - const coreEvent = createCoreData(this, x, y); - - const shouldUpdate = this.props.onDrag(e, coreEvent); - - if (shouldUpdate === false || this.mounted === false) { - try { - // $FlowIgnore - this.handleDragStop(new MouseEvent('mouseup')); - } catch (err) { - // Old browsers - const event = ((document.createEvent('MouseEvents') - /*: any*/ - ) - /*: MouseTouchEvent*/ - ); // I see why this insanity was deprecated - // $FlowIgnore - - event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); - this.handleDragStop(event); - } - - return; - } - - this.setState({ - lastX: x, - lastY: y - }); - }); - - _defineProperty$1(this, "handleDragStop", e => { - if (!this.state.dragging) return; - const position = getControlPosition(e, this.state.touchIdentifier, this); - if (position == null) return; - const { - x, - y - } = position; - const coreEvent = createCoreData(this, x, y); // Call event handler - - const shouldContinue = this.props.onStop(e, coreEvent); - if (shouldContinue === false || this.mounted === false) return false; - const thisNode = ReactDOM.findDOMNode(this); - - if (thisNode) { - // Remove user-select hack - if (this.props.enableUserSelectHack) removeUserSelectStyles(thisNode.ownerDocument); - } - - this.setState({ - dragging: false, - lastX: NaN, - lastY: NaN - }); - - if (thisNode) { - removeEvent(thisNode.ownerDocument, dragEventFor.move, this.handleDrag); - removeEvent(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop); - } - }); - - _defineProperty$1(this, "onMouseDown", e => { - dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse - - return this.handleDragStart(e); - }); - - _defineProperty$1(this, "onMouseUp", e => { - dragEventFor = eventsFor.mouse; - return this.handleDragStop(e); - }); - - _defineProperty$1(this, "onTouchStart", e => { - // We're on a touch device now, so change the event handlers - dragEventFor = eventsFor.touch; - return this.handleDragStart(e); - }); - - _defineProperty$1(this, "onTouchEnd", e => { - // We're on a touch device now, so change the event handlers - dragEventFor = eventsFor.touch; - return this.handleDragStop(e); - }); - } - - componentDidMount() { - this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable. - // https://developers.google.com/web/updates/2017/01/scrolling-intervention - - const thisNode = ReactDOM.findDOMNode(this); - - if (thisNode) { - addEvent(thisNode, eventsFor.touch.start, this.onTouchStart, { - passive: false - }); - } - } - - componentWillUnmount() { - this.mounted = false; // Remove any leftover event handlers. Remove both touch and mouse handlers in case - // some browser quirk caused a touch event to fire during a mouse move, or vice versa. - - const thisNode = ReactDOM.findDOMNode(this); - - if (thisNode) { - const { - ownerDocument - } = thisNode; - removeEvent(ownerDocument, eventsFor.mouse.move, this.handleDrag); - removeEvent(ownerDocument, eventsFor.touch.move, this.handleDrag); - removeEvent(ownerDocument, eventsFor.mouse.stop, this.handleDragStop); - removeEvent(ownerDocument, eventsFor.touch.stop, this.handleDragStop); - removeEvent(thisNode, eventsFor.touch.start, this.onTouchStart, { - passive: false - }); - if (this.props.enableUserSelectHack) removeUserSelectStyles(ownerDocument); - } - } - - render() { - // Reuse the child provided - // This makes it flexible to use whatever element is wanted (div, ul, etc) - return React__default.cloneElement(React__default.Children.only(this.props.children), { - // Note: mouseMove handler is attached to document so it will still function - // when the user drags quickly and leaves the bounds of the element. - onMouseDown: this.onMouseDown, - onMouseUp: this.onMouseUp, - // onTouchStart is added on `componentDidMount` so they can be added with - // {passive: false}, which allows it to cancel. See - // https://developers.google.com/web/updates/2017/01/scrolling-intervention - onTouchEnd: this.onTouchEnd - }); - } - -} - -_defineProperty$1(DraggableCore, "displayName", 'DraggableCore'); - -_defineProperty$1(DraggableCore, "propTypes", { - /** - * `allowAnyClick` allows dragging using any mouse button. - * By default, we only accept the left button. - * - * Defaults to `false`. - */ - allowAnyClick: propTypes.bool, - - /** - * `disabled`, if true, stops the from dragging. All handlers, - * with the exception of `onMouseDown`, will not fire. - */ - disabled: propTypes.bool, - - /** - * By default, we add 'user-select:none' attributes to the document body - * to prevent ugly text selection during drag. If this is causing problems - * for your app, set this to `false`. - */ - enableUserSelectHack: propTypes.bool, - - /** - * `offsetParent`, if set, uses the passed DOM node to compute drag offsets - * instead of using the parent node. - */ - offsetParent: function (props - /*: DraggableCoreProps*/ - , propName - /*: $Keys*/ - ) { - if (props[propName] && props[propName].nodeType !== 1) { - throw new Error('Draggable\'s offsetParent must be a DOM Node.'); - } - }, - - /** - * `grid` specifies the x and y that dragging should snap to. - */ - grid: propTypes.arrayOf(propTypes.number), - - /** - * `handle` specifies a selector to be used as the handle that initiates drag. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
- *
Click me to drag
- *
This is some other content
- *
- *
- * ); - * } - * }); - * ``` - */ - handle: propTypes.string, - - /** - * `cancel` specifies a selector to be used to prevent drag initialization. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return( - * - *
- *
You can't drag from here
- *
Dragging here works fine
- *
- *
- * ); - * } - * }); - * ``` - */ - cancel: propTypes.string, - - /** - * Called when dragging starts. - * If this function returns the boolean false, dragging will be canceled. - */ - onStart: propTypes.func, - - /** - * Called while dragging. - * If this function returns the boolean false, dragging will be canceled. - */ - onDrag: propTypes.func, - - /** - * Called when dragging stops. - * If this function returns the boolean false, the drag will remain active. - */ - onStop: propTypes.func, - - /** - * A workaround option which can be passed if onMouseDown needs to be accessed, - * since it'll always be blocked (as there is internal use of onMouseDown) - */ - onMouseDown: propTypes.func, - - /** - * `scale`, if set, applies scaling while dragging an element - */ - scale: propTypes.number, - - /** - * These properties should be defined on the child, not here. - */ - className: dontSetMe, - style: dontSetMe, - transform: dontSetMe -}); - -_defineProperty$1(DraggableCore, "defaultProps", { - allowAnyClick: false, - // by default only accept left click - cancel: null, - disabled: false, - enableUserSelectHack: true, - offsetParent: null, - handle: null, - grid: null, - transform: null, - onStart: function () {}, - onDrag: function () {}, - onStop: function () {}, - onMouseDown: function () {}, - scale: 1 -}); - -function _extends$1() { _extends$1 = 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$1.apply(this, arguments); } - -function _defineProperty$2(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; } -/*:: import type {DraggableEventHandler} from './utils/types';*/ - -/*:: import type {Element as ReactElement} from 'react';*/ - -/*:: type DraggableState = { - dragging: boolean, - dragged: boolean, - x: number, y: number, - slackX: number, slackY: number, - isElementSVG: boolean, - prevPropsPosition: ?ControlPosition, -};*/ - -/*:: export type DraggableProps = { - ...$Exact, - axis: 'both' | 'x' | 'y' | 'none', - bounds: DraggableBounds | string | false, - defaultClassName: string, - defaultClassNameDragging: string, - defaultClassNameDragged: string, - defaultPosition: ControlPosition, - positionOffset: PositionOffsetControlPosition, - position: ControlPosition, - scale: number -};*/ - -// -// Define -// -class Draggable extends React__default.Component -/*:: */ -{ - // React 16.3+ - // Arity (props, state) - static getDerivedStateFromProps({ - position - } - /*: DraggableProps*/ - , { - prevPropsPosition - } - /*: DraggableState*/ - ) { - // Set x/y if a new position is provided in props that is different than the previous. - if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) { - return { - x: position.x, - y: position.y, - prevPropsPosition: { ...position - } - }; - } - - return null; - } - - constructor(props - /*: DraggableProps*/ - ) { - super(props); - - _defineProperty$2(this, "onDragStart", (e, coreData) => { - - const shouldStart = this.props.onStart(e, createDraggableData(this, coreData)); // Kills start event on core as well, so move handlers are never bound. - - if (shouldStart === false) return false; - this.setState({ - dragging: true, - dragged: true - }); - }); - - _defineProperty$2(this, "onDrag", (e, coreData) => { - if (!this.state.dragging) return false; - const uiData = createDraggableData(this, coreData); - const newState - /*: $Shape*/ - = { - x: uiData.x, - y: uiData.y - }; // Keep within bounds. - - if (this.props.bounds) { - // Save original x and y. - const { - x, - y - } = newState; // Add slack to the values used to calculate bound position. This will ensure that if - // we start removing slack, the element won't react to it right away until it's been - // completely removed. - - newState.x += this.state.slackX; - newState.y += this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries. - - const [newStateX, newStateY] = getBoundPosition(this, newState.x, newState.y); - newState.x = newStateX; - newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler. - - newState.slackX = this.state.slackX + (x - newState.x); - newState.slackY = this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect. - - uiData.x = newState.x; - uiData.y = newState.y; - uiData.deltaX = newState.x - this.state.x; - uiData.deltaY = newState.y - this.state.y; - } // Short-circuit if user's callback killed it. - - - const shouldUpdate = this.props.onDrag(e, uiData); - if (shouldUpdate === false) return false; - this.setState(newState); - }); - - _defineProperty$2(this, "onDragStop", (e, coreData) => { - if (!this.state.dragging) return false; // Short-circuit if user's callback killed it. - - const shouldContinue = this.props.onStop(e, createDraggableData(this, coreData)); - if (shouldContinue === false) return false; - const newState - /*: $Shape*/ - = { - dragging: false, - slackX: 0, - slackY: 0 - }; // If this is a controlled component, the result of this operation will be to - // revert back to the old position. We expect a handler on `onDragStop`, at the least. - - const controlled = Boolean(this.props.position); - - if (controlled) { - const { - x, - y - } = this.props.position; - newState.x = x; - newState.y = y; - } - - this.setState(newState); - }); - - this.state = { - // Whether or not we are currently dragging. - dragging: false, - // Whether or not we have been dragged before. - dragged: false, - // Current transform x and y. - x: props.position ? props.position.x : props.defaultPosition.x, - y: props.position ? props.position.y : props.defaultPosition.y, - prevPropsPosition: { ...props.position - }, - // Used for compensating for out-of-bounds drags - slackX: 0, - slackY: 0, - // Can only determine if SVG after mounting - isElementSVG: false - }; - - if (props.position && !(props.onDrag || props.onStop)) { - // eslint-disable-next-line no-console - 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() { - // Check to see if the element passed is an instanceof SVGElement - if (typeof window.SVGElement !== 'undefined' && ReactDOM.findDOMNode(this) instanceof window.SVGElement) { - this.setState({ - isElementSVG: true - }); - } - } - - componentWillUnmount() { - this.setState({ - dragging: false - }); // prevents invariant if unmounted while dragging - } - - render() - /*: ReactElement*/ - { - const { - axis, - bounds, - children, - defaultPosition, - defaultClassName, - defaultClassNameDragging, - defaultClassNameDragged, - position, - positionOffset, - scale, - ...draggableCoreProps - } = this.props; - let style = {}; - let svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging. - - const controlled = Boolean(position); - const draggable = !controlled || this.state.dragging; - const validPosition = position || defaultPosition; - const transformOpts = { - // Set left if horizontal drag is enabled - x: canDragX(this) && draggable ? this.state.x : validPosition.x, - // Set top if vertical drag is enabled - y: canDragY(this) && draggable ? this.state.y : validPosition.y - }; // If this element was SVG, we use the `transform` attribute. - - if (this.state.isElementSVG) { - svgTransform = createSVGTransform(transformOpts, positionOffset); - } else { - // Add a CSS transform to move the element around. This allows us to move the element around - // without worrying about whether or not it is relatively or absolutely positioned. - // If the item you are dragging already has a transform set, wrap it in a so - // has a clean slate. - style = createCSSTransform(transformOpts, positionOffset); - } // Mark with class while dragging - - - const className = classnames(children.props.className || '', defaultClassName, { - [defaultClassNameDragging]: this.state.dragging, - [defaultClassNameDragged]: this.state.dragged - }); // Reuse the child provided - // This makes it flexible to use whatever element is wanted (div, ul, etc) - - return /*#__PURE__*/React__default.createElement(DraggableCore, _extends$1({}, draggableCoreProps, { - onStart: this.onDragStart, - onDrag: this.onDrag, - onStop: this.onDragStop - }), React__default.cloneElement(React__default.Children.only(children), { - className: className, - style: { ...children.props.style, - ...style - }, - transform: svgTransform - })); - } - -} - -_defineProperty$2(Draggable, "displayName", 'Draggable'); - -_defineProperty$2(Draggable, "propTypes", { // Accepts all props accepts. - ...DraggableCore.propTypes, - - /** - * `axis` determines which axis the draggable can move. - * - * Note that all callbacks will still return data as normal. This only - * controls flushing to the DOM. - * - * 'both' allows movement horizontally and vertically. - * 'x' limits movement to horizontal axis. - * 'y' limits movement to vertical axis. - * 'none' limits all movement. - * - * Defaults to 'both'. - */ - axis: propTypes.oneOf(['both', 'x', 'y', 'none']), - - /** - * `bounds` determines the range of movement available to the element. - * Available values are: - * - * 'parent' restricts movement within the Draggable's parent node. - * - * Alternatively, pass an object with the following properties, all of which are optional: - * - * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND} - * - * All values are in px. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
Content
- *
- * ); - * } - * }); - * ``` - */ - bounds: propTypes.oneOfType([propTypes.shape({ - left: propTypes.number, - right: propTypes.number, - top: propTypes.number, - bottom: propTypes.number - }), propTypes.string, propTypes.oneOf([false])]), - defaultClassName: propTypes.string, - defaultClassNameDragging: propTypes.string, - defaultClassNameDragged: propTypes.string, - - /** - * `defaultPosition` specifies the x and y that the dragged item should start at - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
I start with transformX: 25px and transformY: 25px;
- *
- * ); - * } - * }); - * ``` - */ - defaultPosition: propTypes.shape({ - x: propTypes.number, - y: propTypes.number - }), - positionOffset: propTypes.shape({ - x: propTypes.oneOfType([propTypes.number, propTypes.string]), - y: propTypes.oneOfType([propTypes.number, propTypes.string]) - }), - - /** - * `position`, if present, defines the current position of the element. - * - * This is similar to how form elements in React work - if no `position` is supplied, the component - * is uncontrolled. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
I start with transformX: 25px and transformY: 25px;
- *
- * ); - * } - * }); - * ``` - */ - position: propTypes.shape({ - x: propTypes.number, - y: propTypes.number - }), - - /** - * These properties should be defined on the child, not here. - */ - className: dontSetMe, - style: dontSetMe, - transform: dontSetMe -}); - -_defineProperty$2(Draggable, "defaultProps", { ...DraggableCore.defaultProps, - axis: 'both', - bounds: false, - defaultClassName: 'react-draggable', - defaultClassNameDragging: 'react-draggable-dragging', - defaultClassNameDragged: 'react-draggable-dragged', - defaultPosition: { - x: 0, - y: 0 - }, - position: null, - scale: 1 -}); - -/** - * The nodes selection rectangle gets displayed when a user - * made a selectio with on or several nodes - */ -function getStartPositions(nodes) { - var startPositions = {}; - return nodes.reduce(function (res, node) { - var startPosition = { - x: node.__rg.position.x || node.position.x, - y: node.__rg.position.y || node.position.y, - }; - res[node.id] = startPosition; - return res; - }, startPositions); -} -var NodesSelection = memo(function () { - var _a = useState({ x: 0, y: 0 }), offset = _a[0], setOffset = _a[1]; - var _b = useState({}), startPositions = _b[0], setStartPositions = _b[1]; - var state = useStoreState$1(function (s) { return ({ - transform: s.transform, - selectedNodesBbox: s.selectedNodesBbox, - selectedElements: s.selectedElements, - snapToGrid: s.snapToGrid, - snapGrid: s.snapGrid, - nodes: s.nodes, - }); }); - var updateNodePos = useStoreActions$1(function (a) { return a.updateNodePos; }); - var _c = state.transform, tx = _c[0], ty = _c[1], tScale = _c[2]; - var position = state.selectedNodesBbox; - var grid = (state.snapToGrid ? state.snapGrid : [1, 1]); - var onStart = function (evt) { - var scaledClient = { - x: evt.clientX / tScale, - y: evt.clientY / tScale, - }; - var offsetX = scaledClient.x - position.x - tx; - var offsetY = scaledClient.y - position.y - ty; - var selectedNodes = state.selectedElements.filter(isNode).map(function (selectedNode) { return state.nodes.find(function (node) { return node.id === selectedNode.id; }); }); - var nextStartPositions = getStartPositions(selectedNodes); - if (nextStartPositions) { - setOffset({ x: offsetX, y: offsetY }); - setStartPositions(nextStartPositions); - } - }; - var onDrag = function (evt) { - var scaledClient = { - x: evt.clientX / tScale, - y: evt.clientY / tScale, - }; - state.selectedElements.filter(isNode).forEach(function (node) { - var pos = { - x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - tx, - y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - ty, - }; - updateNodePos({ id: node.id, pos: pos }); - }); - }; - return (React__default.createElement("div", { className: "react-flow__nodesselection", style: { - transform: "translate(" + tx + "px," + ty + "px) scale(" + tScale + ")", - } }, - React__default.createElement(Draggable, { scale: tScale, grid: grid, onStart: function (evt) { return onStart(evt); }, onDrag: function (evt) { return onDrag(evt); } }, - React__default.createElement("div", { className: "react-flow__nodesselection-rect", style: { - width: state.selectedNodesBbox.width, - height: state.selectedNodesBbox.height, - top: state.selectedNodesBbox.y, - left: state.selectedNodesBbox.x, - } })))); -}); - -var baseStyles = { - position: 'absolute', - top: 0, - left: 0, -}; -var createGridLines = function (width, height, xOffset, yOffset, gap) { - var lineCountX = Math.ceil(width / gap) + 1; - var lineCountY = Math.ceil(height / gap) + 1; - var xValues = Array.from({ length: lineCountX }, function (_, i) { return "M" + (i * gap + xOffset) + " 0 V" + height; }); - var yValues = Array.from({ length: lineCountY }, function (_, i) { return "M0 " + (i * gap + yOffset) + " H" + width; }); - return __spreadArrays(xValues, yValues).join(' '); -}; -var createGridDots = function (width, height, xOffset, yOffset, gap, size) { - var lineCountX = Math.ceil(width / gap) + 1; - var lineCountY = Math.ceil(height / gap) + 1; - var values = Array.from({ length: lineCountX }, function (_, col) { - var x = col * gap + xOffset; - return Array.from({ length: lineCountY }, function (_, row) { - var y = row * gap + yOffset; - return "M" + x + " " + (y - - size) + " l" + size + " " + size + " l" + -size + " " + size + " l" + -size + " " + -size + "z"; - }).join(' '); - }); - return values.join(' '); -}; -var Grid = memo(function (_a) { - var _b = _a.gap, gap = _b === void 0 ? 24 : _b, _c = _a.color, color = _c === void 0 ? '#aaa' : _c, _d = _a.size, size = _d === void 0 ? 0.5 : _d, _e = _a.style, style = _e === void 0 ? {} : _e, _f = _a.className, className = _f === void 0 ? '' : _f, _g = _a.backgroundType, backgroundType = _g === void 0 ? GridType.Dots : _g; - var _h = useStoreState$1(function (s) { return s; }), width = _h.width, height = _h.height, _j = _h.transform, x = _j[0], y = _j[1], scale = _j[2]; - var gridClasses = classnames('react-flow__grid', className); - var scaledGap = gap * scale; - var xOffset = x % scaledGap; - var yOffset = y % scaledGap; - var isLines = backgroundType === 'lines'; - var path = isLines - ? createGridLines(width, height, xOffset, yOffset, scaledGap) - : createGridDots(width, height, xOffset, yOffset, scaledGap, size); - var fill = isLines ? 'none' : color; - var stroke = isLines ? color : 'none'; - return (React__default.createElement("svg", { width: width, height: height, style: __assign(__assign({}, baseStyles), style), className: gridClasses }, - React__default.createElement("path", { fill: fill, stroke: stroke, strokeWidth: size, d: path }))); -}); -Grid.displayName = 'Grid'; - -var useKeyPress = (function (keyCode) { - var _a = useState(false), keyPressed = _a[0], setKeyPressed = _a[1]; - function downHandler(evt) { - if (evt.keyCode === keyCode && !isInputDOMNode(evt)) { - setKeyPressed(true); - } - } - var upHandler = function (evt) { - if (evt.keyCode === keyCode && !isInputDOMNode(evt)) { - setKeyPressed(false); - } - }; - useEffect(function () { - window.addEventListener('keydown', downHandler); - window.addEventListener('keyup', upHandler); - return function () { - window.removeEventListener('keydown', downHandler); - window.removeEventListener('keyup', upHandler); - }; - }, []); - return keyPressed; -}); - -var d3ZoomInstance = zoom() - .scaleExtent([0.5, 2]) - .filter(function () { return !event.button; }); -var useD3Zoom = (function (zoomPane, onMove, shiftPressed) { - var state = useStoreState$1(function (s) { return ({ - transform: s.transform, - d3Selection: s.d3Selection, - d3Zoom: s.d3Zoom, - }); }); - var initD3 = useStoreActions$1(function (actions) { return actions.initD3; }); - var updateTransform = useStoreActions$1(function (actions) { return actions.updateTransform; }); - useEffect(function () { - if (zoomPane.current) { - var selection = select(zoomPane.current).call(d3ZoomInstance); - initD3({ zoom: d3ZoomInstance, selection: selection }); - } - }, []); - useEffect(function () { - if (shiftPressed) { - d3ZoomInstance.on('zoom', null); - } - else { - d3ZoomInstance.on('zoom', function () { - if (event.sourceEvent && event.sourceEvent.target !== zoomPane.current) { - return; - } - updateTransform(event.transform); - onMove(); - }); - if (state.d3Selection && state.d3Zoom) { - // we need to restore the graph transform otherwise d3 zoom transform and graph transform are not synced - var graphTransform = identity$1 - .translate(state.transform[0], state.transform[1]) - .scale(state.transform[2]); - state.d3Selection.call(state.d3Zoom.transform, graphTransform); - } - } - return function () { - d3ZoomInstance.on('zoom', null); - }; - }, [shiftPressed]); -}); - -var useGlobalKeyHandler = (function (_a) { - var deleteKeyCode = _a.deleteKeyCode, onElementsRemove = _a.onElementsRemove; - var state = useStoreState$1(function (s) { return ({ - selectedElements: s.selectedElements, - edges: s.edges, - }); }); - var setNodesSelection = useStoreActions$1(function (a) { return a.setNodesSelection; }); - var deleteKeyPressed = useKeyPress(deleteKeyCode); - useEffect(function () { - if (deleteKeyPressed && state.selectedElements.length) { - var elementsToRemove = state.selectedElements; - // we also want to remove the edges if only one node is selected - if (state.selectedElements.length === 1 && - !isEdge(state.selectedElements[0])) { - var node = state.selectedElements[0]; - var connectedEdges = getConnectedEdges([node], state.edges); - elementsToRemove = __spreadArrays(state.selectedElements, connectedEdges); - } - onElementsRemove(elementsToRemove); - setNodesSelection({ isActive: false }); - } - }, [deleteKeyPressed]); -}); - -var useElementUpdater = function (elements) { - var state = useStoreState$1(function (s) { return ({ - nodes: s.nodes, - edges: s.edges, - transform: s.transform, - snapToGrid: s.snapToGrid, - snapGrid: s.snapGrid, - }); }); - var setNodes = useStoreActions$1(function (a) { return a.setNodes; }); - var setEdges = useStoreActions$1(function (a) { return a.setEdges; }); - useEffect(function () { - var nodes = elements.filter(isNode); - var edges = elements - .filter(isEdge) - .map(function (e) { - return parseElement(e, state.transform, state.snapToGrid, state.snapGrid); - }); - var nextNodes = nodes.map(function (propNode) { - var existingNode = state.nodes.find(function (n) { return n.id === propNode.id; }); - if (existingNode) { - var data = !fastDeepEqual(existingNode.data, propNode.data) - ? __assign(__assign({}, existingNode.data), propNode.data) : existingNode.data; - return __assign(__assign({}, existingNode), { data: data }); - } - return parseElement(propNode, state.transform, state.snapToGrid, state.snapGrid); - }); - var nodesChanged = !fastDeepEqual(state.nodes, nextNodes); - var edgesChanged = !fastDeepEqual(state.edges, edges); - if (nodesChanged) { - setNodes(nextNodes); - } - if (edgesChanged) { - setEdges(edges); - } - }); -}; - -var GraphView = memo(function (_a) { - var nodeTypes = _a.nodeTypes, edgeTypes = _a.edgeTypes, onMove = _a.onMove, onLoad = _a.onLoad, onElementClick = _a.onElementClick, onNodeDragStop = _a.onNodeDragStop, connectionLineType = _a.connectionLineType, connectionLineStyle = _a.connectionLineStyle, selectionKeyCode = _a.selectionKeyCode, onElementsRemove = _a.onElementsRemove, deleteKeyCode = _a.deleteKeyCode, elements = _a.elements, showBackground = _a.showBackground, backgroundGap = _a.backgroundGap, backgroundColor = _a.backgroundColor, backgroundType = _a.backgroundType, onConnect = _a.onConnect, snapToGrid = _a.snapToGrid, snapGrid = _a.snapGrid, onlyRenderVisibleNodes = _a.onlyRenderVisibleNodes, isInteractive = _a.isInteractive; - var zoomPane = useRef(null); - var rendererNode = useRef(null); - var state = useStoreState$1(function (s) { return ({ - width: s.width, - height: s.height, - nodes: s.nodes, - edges: s.edges, - d3Initialised: s.d3Initialised, - nodesSelectionActive: s.nodesSelectionActive, - }); }); - var updateSize = useStoreActions$1(function (actions) { return actions.updateSize; }); - var setNodesSelection = useStoreActions$1(function (actions) { return actions.setNodesSelection; }); - var setOnConnect = useStoreActions$1(function (a) { return a.setOnConnect; }); - var setSnapGrid = useStoreActions$1(function (actions) { return actions.setSnapGrid; }); - var setInteractive = useStoreActions$1(function (actions) { return actions.setInteractive; }); - var selectionKeyPressed = useKeyPress(selectionKeyCode); - var rendererClasses = classnames('react-flow__renderer', { 'is-interactive': isInteractive }); - var onZoomPaneClick = function () { return setNodesSelection({ isActive: false }); }; - var updateDimensions = function () { - if (!rendererNode.current) { - return; - } - var size = getDimensions(rendererNode.current); - updateSize(size); - }; - useEffect(function () { - updateDimensions(); - setOnConnect(onConnect); - window.onresize = updateDimensions; - return function () { - window.onresize = null; - }; - }, []); - useD3Zoom(zoomPane, onMove, selectionKeyPressed); - useEffect(function () { - if (state.d3Initialised) { - onLoad({ - fitView: fitView, - zoomIn: zoomIn, - zoomOut: zoomOut, - }); - } - }, [state.d3Initialised]); - useEffect(function () { - setSnapGrid({ snapToGrid: snapToGrid, snapGrid: snapGrid }); - }, [snapToGrid]); - useEffect(function () { - setInteractive(isInteractive); - }, [isInteractive]); - useGlobalKeyHandler({ onElementsRemove: onElementsRemove, deleteKeyCode: deleteKeyCode }); - useElementUpdater(elements); - return (React__default.createElement("div", { className: rendererClasses, ref: rendererNode }, - showBackground && (React__default.createElement(Grid, { gap: backgroundGap, color: backgroundColor, backgroundType: backgroundType })), - React__default.createElement(NodeRenderer, { nodeTypes: nodeTypes, onElementClick: onElementClick, onNodeDragStop: onNodeDragStop, onlyRenderVisibleNodes: onlyRenderVisibleNodes }), - React__default.createElement(EdgeRenderer, { width: state.width, height: state.height, edgeTypes: edgeTypes, onElementClick: onElementClick, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle }), - selectionKeyPressed && React__default.createElement(UserSelection, { isInteractive: isInteractive }), - state.nodesSelectionActive && React__default.createElement(NodesSelection, null), - React__default.createElement("div", { className: "react-flow__zoompane", onClick: onZoomPaneClick, ref: zoomPane }))); -}); -GraphView.displayName = 'GraphView'; - -function onMouseDown(evt, nodeId, setSourceId, setPosition, onConnect, isTarget, isValidConnection) { - var reactFlowNode = document.querySelector('.react-flow'); - if (!reactFlowNode) { - return; - } - var containerBounds = reactFlowNode.getBoundingClientRect(); - var recentHoveredHandle; - setPosition({ - x: evt.clientX - containerBounds.left, - y: evt.clientY - containerBounds.top, - }); - setSourceId(nodeId); - function resetRecentHandle() { - if (!recentHoveredHandle) { - return; - } - recentHoveredHandle.classList.remove('valid'); - recentHoveredHandle.classList.remove('connecting'); - } - // checks if element below mouse is a handle and returns connection in form of an object { source: 123, target: 312 } - function checkElementBelowIsValid(evt) { - var elementBelow = document.elementFromPoint(evt.clientX, evt.clientY); - var result = { - elementBelow: elementBelow, - isValid: false, - connection: { source: null, target: null }, - isHoveringHandle: false, - }; - if (elementBelow && (elementBelow.classList.contains('target') || elementBelow.classList.contains('source'))) { - var connection = { source: null, target: null }; - if (isTarget) { - var sourceId = elementBelow.getAttribute('data-nodeid'); - connection = { source: sourceId, target: nodeId }; - } - else { - var targetId = elementBelow.getAttribute('data-nodeid'); - connection = { source: nodeId, target: targetId }; - } - var isValid = isValidConnection(connection); - result.connection = connection; - result.isValid = isValid; - result.isHoveringHandle = true; - } - return result; - } - function onMouseMove(evt) { - setPosition({ - x: evt.clientX - containerBounds.left, - y: evt.clientY - containerBounds.top, - }); - var _a = checkElementBelowIsValid(evt), connection = _a.connection, elementBelow = _a.elementBelow, isValid = _a.isValid, isHoveringHandle = _a.isHoveringHandle; - if (!isHoveringHandle) { - return resetRecentHandle(); - } - var isOwnHandle = connection.source === connection.target; - if (!isOwnHandle && elementBelow) { - recentHoveredHandle = elementBelow; - elementBelow.classList.add('connecting'); - elementBelow.classList.toggle('valid', isValid); - } - } - function onMouseUp(evt) { - var _a = checkElementBelowIsValid(evt), connection = _a.connection, isValid = _a.isValid; - if (isValid) { - onConnect(connection); - } - resetRecentHandle(); - setSourceId(null); - document.removeEventListener('mousemove', onMouseMove); - document.removeEventListener('mouseup', onMouseUp); - } - document.addEventListener('mousemove', onMouseMove); - document.addEventListener('mouseup', onMouseUp); -} -var BaseHandle = memo(function (_a) { - var type = _a.type, nodeId = _a.nodeId, onConnect = _a.onConnect, position = _a.position, setSourceId = _a.setSourceId, setPosition = _a.setPosition, className = _a.className, _b = _a.id, id = _b === void 0 ? false : _b, isValidConnection = _a.isValidConnection, rest = __rest(_a, ["type", "nodeId", "onConnect", "position", "setSourceId", "setPosition", "className", "id", "isValidConnection"]); - var isTarget = type === 'target'; - var handleClasses = classnames('react-flow__handle', 'nodrag', className, position, { - source: !isTarget, - target: isTarget, - }); - var nodeIdWithHandleId = id ? nodeId + "__" + id : nodeId; - return (React__default.createElement("div", __assign({ "data-nodeid": nodeIdWithHandleId, "data-handlepos": position, className: handleClasses, onMouseDown: function (evt) { - return onMouseDown(evt, nodeIdWithHandleId, setSourceId, setPosition, onConnect, isTarget, isValidConnection); - } }, rest))); -}); -BaseHandle.displayName = 'BaseHandle'; - -var NodeIdContext = createContext(null); -var Provider = NodeIdContext.Provider; -var Consumer = NodeIdContext.Consumer; - -var Handle = memo(function (_a) { - var _b = _a.onConnect, onConnect = _b === void 0 ? function (_) { } : _b, _c = _a.type, type = _c === void 0 ? 'source' : _c, _d = _a.position, position = _d === void 0 ? Position.Top : _d, _e = _a.isValidConnection, isValidConnection = _e === void 0 ? function () { return true; } : _e, rest = __rest(_a, ["onConnect", "type", "position", "isValidConnection"]); - var nodeId = useContext(NodeIdContext); - var _f = useStoreActions$1(function (a) { return ({ - setPosition: a.setConnectionPosition, - setSourceId: a.setConnectionSourceId, - }); }), setPosition = _f.setPosition, setSourceId = _f.setSourceId; - var onConnectAction = useStoreState$1(function (s) { return s.onConnect; }); - var onConnectExtended = function (params) { - onConnectAction(params); - onConnect(params); - }; - return (React__default.createElement(BaseHandle, __assign({ nodeId: nodeId, setPosition: setPosition, setSourceId: setSourceId, onConnect: onConnectExtended, type: type, position: position, isValidConnection: isValidConnection }, rest))); -}); -Handle.displayName = 'Handle'; - -var nodeStyles = { - background: '#ff6060', - padding: 10, - borderRadius: 5, - width: 150, -}; -var DefaultNode = (function (_a) { - var data = _a.data, _b = _a.targetPosition, targetPosition = _b === void 0 ? Position.Top : _b, _c = _a.sourcePosition, sourcePosition = _c === void 0 ? Position.Bottom : _c, style = _a.style; - return (React__default.createElement("div", { style: __assign(__assign({}, nodeStyles), style) }, - React__default.createElement(Handle, { type: "target", position: targetPosition }), - data.label, - React__default.createElement(Handle, { type: "source", position: sourcePosition }))); -}); - -var nodeStyles$1 = { - background: '#9999ff', - padding: 10, - borderRadius: 5, - width: 150, -}; -var InputNode = (function (_a) { - var data = _a.data, style = _a.style, _b = _a.sourcePosition, sourcePosition = _b === void 0 ? Position.Bottom : _b; - return (React__default.createElement("div", { style: __assign(__assign({}, nodeStyles$1), style) }, - data.label, - React__default.createElement(Handle, { type: "source", position: sourcePosition }))); -}); - -var nodeStyles$2 = { - background: '#55dd99', - padding: 10, - borderRadius: 5, - width: 150, -}; -var OutputNode = (function (_a) { - var data = _a.data, style = _a.style, _b = _a.targetPosition, targetPosition = _b === void 0 ? Position.Top : _b; - return (React__default.createElement("div", { style: __assign(__assign({}, nodeStyles$2), style) }, - React__default.createElement(Handle, { type: "target", position: targetPosition }), - data.label)); -}); - -var ContentRect_1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -var ContentRect = function (target) { - if ('getBBox' in target) { - var box = target.getBBox(); - return Object.freeze({ - height: box.height, - left: 0, - top: 0, - width: box.width, - }); - } - else { // if (target instanceof HTMLElement) { // also includes all other non-SVGGraphicsElements - var styles = window.getComputedStyle(target); - return Object.freeze({ - height: parseFloat(styles.height || '0'), - left: parseFloat(styles.paddingLeft || '0'), - top: parseFloat(styles.paddingTop || '0'), - width: parseFloat(styles.width || '0'), - }); - } -}; -exports.ContentRect = ContentRect; - -}); - -unwrapExports(ContentRect_1); -var ContentRect_2 = ContentRect_1.ContentRect; - -var ResizeObservation_1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); - -var ResizeObservation = /** @class */ (function () { - function ResizeObservation(target) { - this.target = target; - this.$$broadcastWidth = this.$$broadcastHeight = 0; - } - Object.defineProperty(ResizeObservation.prototype, "broadcastWidth", { - get: function () { - return this.$$broadcastWidth; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ResizeObservation.prototype, "broadcastHeight", { - get: function () { - return this.$$broadcastHeight; - }, - enumerable: true, - configurable: true - }); - ResizeObservation.prototype.isActive = function () { - var cr = ContentRect_1.ContentRect(this.target); - return !!cr - && (cr.width !== this.broadcastWidth - || cr.height !== this.broadcastHeight); - }; - return ResizeObservation; -}()); -exports.ResizeObservation = ResizeObservation; - -}); - -unwrapExports(ResizeObservation_1); -var ResizeObservation_2 = ResizeObservation_1.ResizeObservation; - -var ResizeObserverEntry_1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); - -var ResizeObserverEntry = /** @class */ (function () { - function ResizeObserverEntry(target) { - this.target = target; - this.contentRect = ContentRect_1.ContentRect(target); - } - return ResizeObserverEntry; -}()); -exports.ResizeObserverEntry = ResizeObserverEntry; - -}); - -unwrapExports(ResizeObserverEntry_1); -var ResizeObserverEntry_2 = ResizeObserverEntry_1.ResizeObserverEntry; - -var ResizeObserver_1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); - - -var resizeObservers = []; -var ResizeObserver = /** @class */ (function () { - function ResizeObserver(callback) { - /** @internal */ - this.$$observationTargets = []; - /** @internal */ - this.$$activeTargets = []; - /** @internal */ - this.$$skippedTargets = []; - var message = callbackGuard(callback); - if (message) { - throw TypeError(message); - } - this.$$callback = callback; - resizeObservers.push(this); - } - ResizeObserver.prototype.observe = function (target) { - var message = targetGuard('observe', target); - if (message) { - throw TypeError(message); - } - var index = findTargetIndex(this.$$observationTargets, target); - if (index > 0) { - return; - } - this.$$observationTargets.push(new ResizeObservation_1.ResizeObservation(target)); - startLoop(); - }; - ResizeObserver.prototype.unobserve = function (target) { - var message = targetGuard('unobserve', target); - if (message) { - throw TypeError(message); - } - var index = findTargetIndex(this.$$observationTargets, target); - if (index < 0) { - return; - } - this.$$observationTargets.splice(index, 1); - checkStopLoop(); - }; - ResizeObserver.prototype.disconnect = function () { - this.$$observationTargets = []; - this.$$activeTargets = []; - }; - return ResizeObserver; -}()); -exports.ResizeObserver = ResizeObserver; -function callbackGuard(callback) { - if (typeof (callback) === 'undefined') { - return "Failed to construct 'ResizeObserver': 1 argument required, but only 0 present."; - } - if (typeof (callback) !== 'function') { - return "Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function."; - } -} -function targetGuard(functionName, target) { - if (typeof (target) === 'undefined') { - return "Failed to execute '" + functionName + "' on 'ResizeObserver': 1 argument required, but only 0 present."; - } - if (!(target instanceof window.Element)) { - return "Failed to execute '" + functionName + "' on 'ResizeObserver': parameter 1 is not of type 'Element'."; - } -} -function findTargetIndex(collection, target) { - for (var index = 0; index < collection.length; index += 1) { - if (collection[index].target === target) { - return index; - } - } - return -1; -} -var gatherActiveObservationsAtDepth = function (depth) { - resizeObservers.forEach(function (ro) { - ro.$$activeTargets = []; - ro.$$skippedTargets = []; - ro.$$observationTargets.forEach(function (ot) { - if (ot.isActive()) { - var targetDepth = calculateDepthForNode(ot.target); - if (targetDepth > depth) { - ro.$$activeTargets.push(ot); - } - else { - ro.$$skippedTargets.push(ot); - } - } - }); - }); -}; -var hasActiveObservations = function () { - return resizeObservers.some(function (ro) { return !!ro.$$activeTargets.length; }); -}; -var hasSkippedObservations = function () { - return resizeObservers.some(function (ro) { return !!ro.$$skippedTargets.length; }); -}; -var broadcastActiveObservations = function () { - var shallowestTargetDepth = Infinity; - resizeObservers.forEach(function (ro) { - if (!ro.$$activeTargets.length) { - return; - } - var entries = []; - ro.$$activeTargets.forEach(function (obs) { - var entry = new ResizeObserverEntry_1.ResizeObserverEntry(obs.target); - entries.push(entry); - obs.$$broadcastWidth = entry.contentRect.width; - obs.$$broadcastHeight = entry.contentRect.height; - var targetDepth = calculateDepthForNode(obs.target); - if (targetDepth < shallowestTargetDepth) { - shallowestTargetDepth = targetDepth; - } - }); - ro.$$callback(entries, ro); - ro.$$activeTargets = []; - }); - return shallowestTargetDepth; -}; -var deliverResizeLoopErrorNotification = function () { - var errorEvent = new window.ErrorEvent('ResizeLoopError', { - message: 'ResizeObserver loop completed with undelivered notifications.', - }); - window.dispatchEvent(errorEvent); -}; -var calculateDepthForNode = function (target) { - var depth = 0; - while (target.parentNode) { - target = target.parentNode; - depth += 1; - } - return depth; -}; -var notificationIteration = function () { - var depth = 0; - gatherActiveObservationsAtDepth(depth); - while (hasActiveObservations()) { - depth = broadcastActiveObservations(); - gatherActiveObservationsAtDepth(depth); - } - if (hasSkippedObservations()) { - deliverResizeLoopErrorNotification(); - } -}; -var animationFrameCancelToken; -var startLoop = function () { - if (animationFrameCancelToken) - return; - runLoop(); -}; -var runLoop = function () { - animationFrameCancelToken = window.requestAnimationFrame(function () { - notificationIteration(); - runLoop(); - }); -}; -var checkStopLoop = function () { - if (animationFrameCancelToken && !resizeObservers.some(function (ro) { return !!ro.$$observationTargets.length; })) { - window.cancelAnimationFrame(animationFrameCancelToken); - animationFrameCancelToken = undefined; - } -}; -var install = function () { - return window.ResizeObserver = ResizeObserver; -}; -exports.install = install; - -}); - -unwrapExports(ResizeObserver_1); -var ResizeObserver_2 = ResizeObserver_1.ResizeObserver; -var ResizeObserver_3 = ResizeObserver_1.install; - -var getMouseEvent = function (evt) { - return typeof TouchEvent !== 'undefined' && evt instanceof TouchEvent ? evt.touches[0] : evt; -}; -var onStart = function (evt, onClick, id, type, data, setOffset, transform, position) { - var startEvt = getMouseEvent(evt); - var scaledClient = { - x: startEvt.clientX * (1 / transform[2]), - y: startEvt.clientY * (1 / transform[2]), - }; - var offsetX = scaledClient.x - position.x - transform[0]; - var offsetY = scaledClient.y - position.y - transform[1]; - var node = { id: id, type: type, position: position, data: data }; - store.dispatch.setSelectedElements({ id: id, type: type }); - setOffset({ x: offsetX, y: offsetY }); - onClick(node); -}; -var onDrag = function (evt, setDragging, id, offset, transform) { - var dragEvt = getMouseEvent(evt); - var scaledClient = { - x: dragEvt.clientX * (1 / transform[2]), - y: dragEvt.clientY * (1 / transform[2]), - }; - setDragging(true); - store.dispatch.updateNodePos({ - id: id, - pos: { - x: scaledClient.x - transform[0] - offset.x, - y: scaledClient.y - transform[1] - offset.y, - }, - }); -}; -var onStop = function (onNodeDragStop, isDragging, setDragging, id, type, position, data) { - if (isDragging) { - setDragging(false); - onNodeDragStop({ - id: id, - type: type, - position: position, - data: data, - }); - } -}; -var wrapNode = (function (NodeComponent) { - var NodeWrapper = memo(function (_a) { - var id = _a.id, type = _a.type, data = _a.data, transform = _a.transform, xPos = _a.xPos, yPos = _a.yPos, selected = _a.selected, onClick = _a.onClick, onNodeDragStop = _a.onNodeDragStop, style = _a.style, isInteractive = _a.isInteractive, sourcePosition = _a.sourcePosition, targetPosition = _a.targetPosition; - var nodeElement = useRef(null); - var _b = useState({ x: 0, y: 0 }), offset = _b[0], setOffset = _b[1]; - var _c = useState(false), isDragging = _c[0], setDragging = _c[1]; - var position = { x: xPos, y: yPos }; - var nodeClasses = classnames('react-flow__node', { selected: selected }); - var nodeStyle = { - zIndex: selected ? 10 : 3, - transform: "translate(" + xPos + "px," + yPos + "px)", - }; - var updateNode = function () { - if (!nodeElement.current) { - return; - } - store.dispatch.updateNodeDimensions({ id: id, nodeElement: nodeElement.current }); - }; - useEffect(function () { - if (nodeElement.current) { - updateNode(); - var resizeObserver_1 = new ResizeObserver_2(function (entries) { - for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) { - var _1 = entries_1[_i]; - updateNode(); - } - }); - resizeObserver_1.observe(nodeElement.current); - return function () { - if (resizeObserver_1 && nodeElement.current) { - resizeObserver_1.unobserve(nodeElement.current); - } - }; - } - return; - }, []); - return (React__default.createElement(DraggableCore, { onStart: function (evt) { return onStart(evt, onClick, id, type, data, setOffset, transform, position); }, onDrag: function (evt) { return onDrag(evt, setDragging, id, offset, transform); }, onStop: function () { return onStop(onNodeDragStop, isDragging, setDragging, id, type, position, data); }, scale: transform[2], disabled: !isInteractive, cancel: ".nodrag" }, - React__default.createElement("div", { className: nodeClasses, ref: nodeElement, style: nodeStyle }, - React__default.createElement(Provider, { value: id }, - React__default.createElement(NodeComponent, { id: id, data: data, type: type, style: style, selected: selected, sourcePosition: sourcePosition, targetPosition: targetPosition }))))); - }); - NodeWrapper.displayName = 'NodeWrapper'; - return NodeWrapper; -}); - -function createNodeTypes(nodeTypes) { - var standardTypes = { - input: wrapNode((nodeTypes.input || InputNode)), - default: wrapNode((nodeTypes.default || DefaultNode)), - output: wrapNode((nodeTypes.output || OutputNode)), - }; - var wrappedTypes = {}; - var specialTypes = Object.keys(nodeTypes) - .filter(function (k) { return !['input', 'default', 'output'].includes(k); }) - .reduce(function (res, key) { - res[key] = wrapNode((nodeTypes[key] || DefaultNode)); - return res; - }, wrappedTypes); - return __assign(__assign({}, standardTypes), specialTypes); -} - -var BezierEdge = memo(function (_a) { - var sourceX = _a.sourceX, sourceY = _a.sourceY, targetX = _a.targetX, targetY = _a.targetY, _b = _a.sourcePosition, sourcePosition = _b === void 0 ? Position.Bottom : _b, _c = _a.targetPosition, targetPosition = _c === void 0 ? Position.Top : _c, _d = _a.style, style = _d === void 0 ? {} : _d; - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - var dAttr = "M" + sourceX + "," + sourceY + " C" + sourceX + "," + centerY + " " + targetX + "," + centerY + " " + targetX + "," + targetY; - var leftAndRight = [Position.Left, Position.Right]; - if (leftAndRight.includes(sourcePosition) && leftAndRight.includes(targetPosition)) { - var xOffset = Math.abs(targetX - sourceX) / 2; - var centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset; - dAttr = "M" + sourceX + "," + sourceY + " C" + centerX + "," + sourceY + " " + centerX + "," + targetY + " " + targetX + "," + targetY; - } - else if (leftAndRight.includes(sourcePosition) || leftAndRight.includes(targetPosition)) { - dAttr = "M" + sourceX + "," + sourceY + " C" + sourceX + "," + targetY + " " + sourceX + "," + targetY + " " + targetX + "," + targetY; - } - return React__default.createElement("path", __assign({}, style, { d: dAttr })); -}); - -var StraightEdge = memo(function (_a) { - var sourceX = _a.sourceX, sourceY = _a.sourceY, targetX = _a.targetX, targetY = _a.targetY, _b = _a.style, style = _b === void 0 ? {} : _b; - return (React__default.createElement("path", __assign({}, style, { d: "M " + sourceX + "," + sourceY + "L " + targetX + "," + targetY }))); -}); - -var StepEdge = memo(function (_a) { - var sourceX = _a.sourceX, sourceY = _a.sourceY, targetX = _a.targetX, targetY = _a.targetY, _b = _a.style, style = _b === void 0 ? {} : _b; - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - return (React__default.createElement("path", __assign({}, style, { d: "M " + sourceX + "," + sourceY + "L " + sourceX + "," + centerY + "L " + targetX + "," + centerY + "L " + targetX + "," + targetY }))); -}); - -var wrapEdge = (function (EdgeComponent) { - var EdgeWrapper = memo(function (_a) { - var id = _a.id, source = _a.source, target = _a.target, type = _a.type, animated = _a.animated, selected = _a.selected, onClick = _a.onClick, isInteractive = _a.isInteractive, rest = __rest(_a, ["id", "source", "target", "type", "animated", "selected", "onClick", "isInteractive"]); - var edgeClasses = classnames('react-flow__edge', { selected: selected, animated: animated }); - var onEdgeClick = function () { - if (!isInteractive) { - return; - } - store.dispatch.setSelectedElements({ id: id, source: source, target: target }); - onClick({ id: id, source: source, target: target, type: type }); - }; - return (React__default.createElement("g", { className: edgeClasses, onClick: onEdgeClick }, - React__default.createElement(EdgeComponent, __assign({ id: id, source: source, target: target, type: type, animated: animated, selected: selected, onClick: onClick }, rest)))); - }); - EdgeWrapper.displayName = 'EdgeWrapper'; - return EdgeWrapper; -}); - -function createEdgeTypes(edgeTypes) { - var standardTypes = { - default: wrapEdge((edgeTypes.default || BezierEdge)), - straight: wrapEdge((edgeTypes.bezier || StraightEdge)), - }; - var wrappedTypes = {}; - var specialTypes = Object.keys(edgeTypes) - .filter(function (k) { return !['default', 'bezier'].includes(k); }) - .reduce(function (res, key) { - res[key] = wrapEdge((edgeTypes[key] || BezierEdge)); - return res; - }, wrappedTypes); - return __assign(__assign({}, standardTypes), specialTypes); -} - -function styleInject(css, ref) { - if ( ref === void 0 ) ref = {}; - var insertAt = ref.insertAt; - - if (!css || typeof document === 'undefined') { return; } - - var head = document.head || document.getElementsByTagName('head')[0]; - var style = document.createElement('style'); - style.type = 'text/css'; - - if (insertAt === 'top') { - if (head.firstChild) { - head.insertBefore(style, head.firstChild); - } else { - head.appendChild(style); - } - } else { - head.appendChild(style); - } - - if (style.styleSheet) { - style.styleSheet.cssText = css; - } else { - style.appendChild(document.createTextNode(css)); - } -} - -var css_248z = ".react-flow {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n\n.react-flow__renderer {\n width: 100%;\n height: 100%;\n position: absolute;\n}\n\n.react-flow__zoompane {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n}\n\n.react-flow__selectionpane {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n}\n\n.react-flow__selection {\n position: absolute;\n top: 0;\n left: 0;\n background: rgba(0, 89, 220, 0.08);\n border: 1px dotted rgba(0, 89, 220, 0.8);\n}\n\n.react-flow__edges {\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n z-index: 2;\n}\n\n.react-flow__edge {\n fill: none;\n stroke: #bbb;\n stroke-width: 2;\n pointer-events: all;\n}\n\n.react-flow__edge.selected {\n stroke: #555;\n }\n\n.react-flow__edge.animated {\n stroke-dasharray: 5;\n -webkit-animation: dashdraw 0.5s linear infinite;\n animation: dashdraw 0.5s linear infinite;\n }\n\n.react-flow__edge.connection {\n stroke: '#ddd';\n pointer-events: none;\n }\n\n@-webkit-keyframes dashdraw {\n from {\n stroke-dashoffset: 10;\n }\n}\n\n@keyframes dashdraw {\n from {\n stroke-dashoffset: 10;\n }\n}\n\n.react-flow__nodes {\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: 3;\n pointer-events: none;\n transform-origin: 0 0;\n}\n\n.is-interactive .react-flow__node {\n cursor: -webkit-grab;\n cursor: grab;\n }\n\n.is-interactive .react-flow__node:hover > * {\n box-shadow: 0 1px 5px 2px rgba(0, 0, 0, 0.08);\n }\n\n.is-interactive .react-flow__handle {\n cursor: crosshair;\n }\n\n.react-flow__node {\n position: absolute;\n color: #222;\n font-family: sans-serif;\n font-size: 12px;\n text-align: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n pointer-events: all;\n transform-origin: 0 0;\n}\n\n.react-flow__node.selected > * {\n box-shadow: 0 0 0 2px #555;\n }\n\n.react-flow__handle {\n position: absolute;\n width: 10px;\n height: 8px;\n background: rgba(255, 255, 255, 0.4);\n}\n\n.react-flow__handle.bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 0);\n }\n\n.react-flow__handle.top {\n left: 50%;\n top: 0;\n transform: translate(-50%, 0);\n }\n\n.react-flow__handle.left {\n top: 50%;\n left: 0;\n transform: translate(0, -50%);\n }\n\n.react-flow__handle.right {\n right: 0;\n top: 50%;\n transform: translate(0, -50%);\n }\n\n.react-flow__nodesselection {\n z-index: 3;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n transform-origin: left top;\n pointer-events: none;\n}\n\n.react-flow__nodesselection-rect {\n position: absolute;\n background: rgba(0, 89, 220, 0.08);\n border: 1px dotted rgba(0, 89, 220, 0.8);\n pointer-events: all;\n }\n\n.react-flow__controls {\n box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n}\n\n.react-flow__controls-button {\n background: #fefefe;\n border-bottom: 1px solid #eee;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 16px;\n height: 16px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n padding: 5px;\n }\n\n.react-flow__controls-button svg {\n width: 100%;\n }\n\n.react-flow__controls-button:hover {\n background: #f4f4f4;\n }\n"; -styleInject(css_248z); - -{ - var whyDidYouRender = require('@welldone-software/why-did-you-render'); - whyDidYouRender(React__default); -} -var ReactFlow = function (_a) { - var style = _a.style, onElementClick = _a.onElementClick, elements = _a.elements, children = _a.children, nodeTypes = _a.nodeTypes, edgeTypes = _a.edgeTypes, onLoad = _a.onLoad, onMove = _a.onMove, onElementsRemove = _a.onElementsRemove, onConnect = _a.onConnect, onNodeDragStop = _a.onNodeDragStop, connectionLineType = _a.connectionLineType, connectionLineStyle = _a.connectionLineStyle, deleteKeyCode = _a.deleteKeyCode, selectionKeyCode = _a.selectionKeyCode, showBackground = _a.showBackground, backgroundGap = _a.backgroundGap, backgroundType = _a.backgroundType, backgroundColor = _a.backgroundColor, snapToGrid = _a.snapToGrid, snapGrid = _a.snapGrid, onlyRenderVisibleNodes = _a.onlyRenderVisibleNodes, isInteractive = _a.isInteractive; - var nodeTypesParsed = useMemo(function () { return createNodeTypes(nodeTypes); }, []); - var edgeTypesParsed = useMemo(function () { return createEdgeTypes(edgeTypes); }, []); - return (React__default.createElement("div", { style: style, className: "react-flow" }, - React__default.createElement(StoreProvider, { store: store }, - React__default.createElement(GraphView, { onLoad: onLoad, onMove: onMove, onElementClick: onElementClick, onNodeDragStop: onNodeDragStop, nodeTypes: nodeTypesParsed, edgeTypes: edgeTypesParsed, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle, selectionKeyCode: selectionKeyCode, onElementsRemove: onElementsRemove, deleteKeyCode: deleteKeyCode, elements: elements, onConnect: onConnect, backgroundColor: backgroundColor, backgroundGap: backgroundGap, showBackground: showBackground, backgroundType: backgroundType, snapToGrid: snapToGrid, snapGrid: snapGrid, onlyRenderVisibleNodes: onlyRenderVisibleNodes, isInteractive: isInteractive }), - children))); -}; -ReactFlow.displayName = 'ReactFlow'; -ReactFlow.defaultProps = { - onElementClick: function () { }, - onElementsRemove: function () { }, - onNodeDragStop: function () { }, - onConnect: function () { }, - onLoad: function () { }, - onMove: function () { }, - nodeTypes: { - input: InputNode, - default: DefaultNode, - output: OutputNode, - }, - edgeTypes: { - default: BezierEdge, - straight: StraightEdge, - step: StepEdge, - }, - connectionLineType: 'bezier', - connectionLineStyle: {}, - deleteKeyCode: 8, - selectionKeyCode: 16, - backgroundColor: '#eee', - backgroundGap: 24, - showBackground: true, - backgroundType: GridType.Dots, - snapToGrid: false, - snapGrid: [16, 16], - onlyRenderVisibleNodes: true, - isInteractive: true, -}; - -var baseStyle = { - position: 'absolute', - zIndex: 5, - bottom: 10, - right: 10, - width: 200, - height: 150, -}; -var MiniMapNode = function (_a) { - var node = _a.node, color = _a.color, borderRadius = _a.borderRadius; - var _b = node.__rg, _c = _b.position, x = _c.x, y = _c.y, width = _b.width, height = _b.height; - var _d = node.style || {}, background = _d.background, backgroundColor = _d.backgroundColor; - var fill = (background || backgroundColor || color); - return (React__default.createElement("rect", { className: "react-flow__minimap-node", x: x, y: y, rx: borderRadius, ry: borderRadius, width: width, height: height, fill: fill })); -}; -var index = (function (_a) { - var _b = _a.style, style = _b === void 0 ? { backgroundColor: '#f8f8f8' } : _b, className = _a.className, _c = _a.nodeColor, nodeColor = _c === void 0 ? '#ddd' : _c, _d = _a.nodeBorderRadius, nodeBorderRadius = _d === void 0 ? 5 : _d, _e = _a.maskColor, maskColor = _e === void 0 ? 'rgba(10, 10, 10, .25)' : _e; - var state = useStoreState$1(function (_a) { - var width = _a.width, height = _a.height, nodes = _a.nodes, _b = _a.transform, tX = _b[0], tY = _b[1], tScale = _b[2]; - return ({ - width: width, - height: height, - nodes: nodes, - tX: tX, - tY: tY, - tScale: tScale, - }); - }); - var mapClasses = classnames('react-flow__minimap', className); - var elementWidth = (style.width || baseStyle.width); - var elementHeight = (style.height || baseStyle.height); - var nodeColorFunc = (nodeColor instanceof Function ? nodeColor : function () { return nodeColor; }); - var hasNodes = state.nodes && state.nodes.length; - var bb = getRectOfNodes(state.nodes); - var viewBB = { - x: -state.tX / state.tScale, - y: -state.tY / state.tScale, - width: state.width / state.tScale, - height: state.height / state.tScale, - }; - var boundingRect = hasNodes ? getBoundsofRects(bb, viewBB) : viewBB; - var scaledWidth = boundingRect.width / elementWidth; - var scaledHeight = boundingRect.height / elementHeight; - var viewScale = Math.max(scaledWidth, scaledHeight); - var viewWidth = viewScale * elementWidth; - var viewHeight = viewScale * elementHeight; - var offset = 5 * viewScale; - var x = boundingRect.x - (viewWidth - boundingRect.width) / 2 - offset; - var y = boundingRect.y - (viewHeight - boundingRect.height) / 2 - offset; - var width = viewWidth + offset * 2; - var height = viewHeight + offset * 2; - return (React__default.createElement("svg", { width: elementWidth, height: elementHeight, viewBox: x + " " + y + " " + width + " " + height, style: __assign(__assign({}, baseStyle), style), className: mapClasses }, - state.nodes.map(function (node) { return (React__default.createElement(MiniMapNode, { key: node.id, node: node, color: nodeColorFunc(node), borderRadius: nodeBorderRadius })); }), - React__default.createElement("path", { className: "react-flow__minimap-mask", d: "M" + (x - offset) + "," + (y - offset) + "h" + (width + offset * 2) + "v" + (height + offset * 2) + "h" + (-width - offset * 2) + "z\n M" + viewBB.x + "," + viewBB.y + "h" + viewBB.width + "v" + viewBB.height + "h" + -viewBB.width + "z", fill: maskColor, fillRule: "evenodd" }))); -}); - -function _extends$2() { _extends$2 = 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$2.apply(this, arguments); } - -var _ref = /*#__PURE__*/createElement("path", { - d: "M416 277.333H277.333V416h-42.666V277.333H96v-42.666h138.667V96h42.666v138.667H416v42.666z" -}); - -function SvgPlus(props) { - return /*#__PURE__*/createElement("svg", _extends$2({ - viewBox: "0 0 512 512" - }, props), _ref); -} - -function _extends$3() { _extends$3 = 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$3.apply(this, arguments); } - -var _ref$1 = /*#__PURE__*/createElement("path", { - d: "M96 235h320v42H96z" -}); - -function SvgMinus(props) { - return /*#__PURE__*/createElement("svg", _extends$3({ - viewBox: "0 0 512 512" - }, props), _ref$1); -} - -function _extends$4() { _extends$4 = 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$4.apply(this, arguments); } - -var _ref$2 = /*#__PURE__*/createElement("path", { - d: "M96 124.2c0-6.9 5.2-12.2 12.2-12.2H176V64h-66.8C75.7 64 48 90.7 48 124.2V192h48v-67.8zM403.6 64H336v48h67.2c6.9 0 12.8 5.2 12.8 12.2V192h48v-67.8c0-33.5-27-60.2-60.4-60.2zM416 386.8c0 6.9-5.2 12.2-12.2 12.2H336v49h67.8c33.5 0 60.2-27.7 60.2-61.2V320h-48v66.8zM108.2 399c-6.9 0-12.2-5.2-12.2-12.2V320H48v66.8c0 33.5 27.7 61.2 61.2 61.2H176v-49h-67.8z" -}); - -function SvgFitview(props) { - return /*#__PURE__*/createElement("svg", _extends$4({ - viewBox: "0 0 512 512" - }, props), _ref$2); -} - -var baseStyle$1 = { - position: 'absolute', - zIndex: 5, - bottom: 10, - left: 10, -}; -var index$1 = (function (_a) { - var style = _a.style, className = _a.className; - var mapClasses = classnames('react-flow__controls', className); - return (React__default.createElement("div", { className: mapClasses, style: __assign(__assign({}, baseStyle$1), style) }, - React__default.createElement("div", { className: "react-flow__controls-button react-flow__controls-zoomin", onClick: zoomIn }, - React__default.createElement(SvgPlus, null)), - React__default.createElement("div", { className: "react-flow__controls-button react-flow__controls-zoomout", onClick: zoomOut }, - React__default.createElement(SvgMinus, null)), - React__default.createElement("div", { className: "react-flow__controls-button react-flow__controls-fitview", onClick: function () { return fitView(); } }, - React__default.createElement(SvgFitview, null)))); -}); - -export default ReactFlow; -export { index$1 as Controls, Handle, index as MiniMap, addEdge, getOutgoers, isEdge, isNode, removeElements }; -//# sourceMappingURL=ReactFlow.esm.js.map diff --git a/dist/ReactFlow.esm.js.map b/dist/ReactFlow.esm.js.map deleted file mode 100644 index edb9f0e7..00000000 --- a/dist/ReactFlow.esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ReactFlow.esm.js","sources":["../node_modules/immer-peasy/dist/immer.module.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/symbol-observable/es/index.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/node_modules/isobject/index.js","../node_modules/easy-peasy/node_modules/is-plain-object/index.js","../node_modules/debounce/index.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/selection/select.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/data.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/sort.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/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/append.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/datum.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-drag/src/nodrag.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.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/selection/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/ease.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.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-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js","../node_modules/fast-deep-equal/index.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/index.js","../node_modules/react-draggable/build/module/utils/shims.js","../node_modules/react-draggable/build/module/utils/getPrefix.js","../node_modules/react-draggable/build/module/utils/domFns.js","../node_modules/react-draggable/build/module/utils/positionFns.js","../node_modules/react-draggable/build/module/utils/log.js","../node_modules/react-draggable/build/module/DraggableCore.js","../node_modules/react-draggable/build/module/Draggable.js","../node_modules/resize-observer/lib/ContentRect.js","../node_modules/resize-observer/lib/ResizeObservation.js","../node_modules/resize-observer/lib/ResizeObserverEntry.js","../node_modules/resize-observer/lib/ResizeObserver.js","../node_modules/style-inject/dist/style-inject.es.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","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","/* 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","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#subscribelistener 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#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\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 hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\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}","/*!\n * isobject \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nexport default function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nimport isObject from 'isobject';\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nexport default function isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n};\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","import { isDraft, original, createDraft, finishDraft, setAutoFreeze } from 'immer-peasy';\nimport React, { createContext, useContext, useRef, useReducer, useState, useEffect, useLayoutEffect, useMemo } from 'react';\nimport { compose, createStore as createStore$1, applyMiddleware } from 'redux';\nimport reduxThunk from 'redux-thunk';\nimport memoizerific from 'memoizerific';\nimport isPlainObject from 'is-plain-object';\nimport debounce from 'debounce';\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, equalityFn) {\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 if (process.env.NODE_ENV === 'development') {\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 throw subscriptionMapStateError.current || err;\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 var isStateEqual = typeof equalityFn === 'function' ? equalityFn(stateRef.current, newState) : stateRef.current === newState;\n\n if (isStateEqual) {\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 createStoreRehydratedHook(Context) {\n return function useStoreRehydrated() {\n var store = useContext(Context);\n\n var _useState = useState(false),\n rehydrated = _useState[0],\n setRehydrated = _useState[1];\n\n useEffect(function () {\n store.persist.resolveRehydration().then(function () {\n return setRehydrated(true);\n });\n }, []);\n return rehydrated;\n };\n}\nvar useStoreRehydrated = createStoreRehydratedHook(StoreContext);\nfunction createTypedHooks() {\n return {\n useStoreActions: useStoreActions,\n useStoreDispatch: useStoreDispatch,\n useStoreState: useStoreState,\n useStoreRehydrated: useStoreRehydrated,\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 = 'a';\nvar actionOnSymbol = 'aO';\nvar computedSymbol = 'c';\nvar persistSymbol = 'p';\nvar reducerSymbol = 'r';\nvar thunkOnSymbol = 'tO';\nvar thunkSymbol = 't';\n\nvar debug = function debug(state) {\n if (isDraft(state)) {\n return original(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 persist = function persist(model, config) {\n var _extends2;\n\n return _extends({}, model, (_extends2 = {}, _extends2[persistSymbol] = config, _extends2));\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 deepCloneStateWithoutComputed = function deepCloneStateWithoutComputed(source) {\n var recursiveClone = function recursiveClone(current) {\n var next = Object.keys(current).reduce(function (acc, key) {\n if (Object.getOwnPropertyDescriptor(current, key).get == null) {\n acc[key] = current[key];\n }\n\n return acc;\n }, {});\n Object.keys(next).forEach(function (key) {\n if (isPlainObject(next[key])) {\n next[key] = recursiveClone(next[key]);\n }\n });\n return next;\n };\n\n return recursiveClone(source);\n};\nvar isPromise = function isPromise(x) {\n return x != null && typeof x === 'object' && typeof x.then === 'function';\n};\nfunction get(path, target) {\n return path.reduce(function (acc, cur) {\n return isPlainObject(acc) ? acc[cur] : undefined;\n }, target);\n}\nfunction 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}\nvar set = function set(path, target, value) {\n if (path.length === 0) {\n if (typeof value === 'object') {\n Object.keys(target).forEach(function (key) {\n delete target[key];\n });\n Object.keys(value).forEach(function (key) {\n target[key] = value[key];\n });\n }\n\n return;\n }\n\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};\nfunction createSimpleProduce(disableImmer) {\n if (disableImmer === void 0) {\n disableImmer = false;\n }\n\n return 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 if (path.length === 0) {\n var _draft = createDraft(state);\n\n var _result = fn(_draft);\n\n if (_result) {\n return isDraft(_result) ? finishDraft(_result) : _result;\n }\n\n return finishDraft(_draft);\n }\n\n var parentPath = path.slice(0, path.length - 1);\n var draft = createDraft(state);\n var parent = get(parentPath, state);\n var current = get(path, draft);\n var result = fn(current);\n\n if (result) {\n parent[path[path.length - 1]] = result;\n }\n\n return finishDraft(draft);\n };\n}\n\nfunction createReducer(disableImmer, actionReducersDict, customReducers, computedProperties) {\n var simpleProduce = createSimpleProduce(disableImmer);\n\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, _ref) {\n var parentPath = _ref.parentPath,\n key = _ref.key,\n red = _ref.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 (_ref2) {\n var parentPath = _ref2.parentPath,\n bindComputedProperty = _ref2.bindComputedProperty;\n bindComputedProperty(get(parentPath, next));\n });\n }\n\n return next;\n };\n\n return rootReducer;\n}\n\nvar noopStorage = {\n getItem: function getItem() {\n return undefined;\n },\n setItem: function setItem() {\n return undefined;\n },\n removeItem: function removeItem() {\n return undefined;\n }\n};\nvar localStorage = typeof window !== 'undefined' && typeof window.localStorage !== 'undefined' ? window.localStorage : noopStorage;\nvar sessionStorage = typeof window !== 'undefined' && typeof window.sessionStorage !== 'undefined' ? window.sessionStorage : noopStorage;\n\nfunction createStorageWrapper(storage, transformers) {\n if (storage === void 0) {\n storage = sessionStorage;\n }\n\n if (transformers === void 0) {\n transformers = [];\n }\n\n if (typeof storage === 'string') {\n if (storage === 'localStorage') {\n storage = localStorage;\n } else if (storage === 'sessionStorage') {\n storage = sessionStorage;\n } else {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\"Invalid storage provider specified for Easy Peasy persist: \" + storage + \"\\nValid values include \\\"localStorage\\\", \\\"sessionStorage\\\" or a custom storage engine.\");\n }\n\n storage = noopStorage;\n }\n }\n\n var outTransformers = transformers.reverse();\n\n var serialize = function serialize(data, key) {\n var simpleKey = key.substr(key.indexOf('@') + 1);\n var transformed = transformers.reduce(function (acc, cur) {\n return cur.in(acc, simpleKey);\n }, data);\n return storage === localStorage || storage === sessionStorage ? JSON.stringify({\n data: transformed\n }) : transformed;\n };\n\n var deserialize = function deserialize(data, key) {\n var simpleKey = key.substr(key.indexOf('@') + 1);\n var result = storage === localStorage || storage === sessionStorage ? JSON.parse(data).data : data;\n return outTransformers.reduce(function (acc, cur) {\n return cur.out(acc, simpleKey);\n }, result);\n };\n\n var isAsync = isPromise(storage.getItem('_'));\n return {\n isAsync: isAsync,\n getItem: function getItem(key) {\n if (isAsync) {\n return storage.getItem(key).then(function (wrapped) {\n return wrapped != null ? deserialize(wrapped, key) : undefined;\n });\n }\n\n var wrapped = storage.getItem(key);\n return wrapped != null ? deserialize(wrapped, key) : undefined;\n },\n setItem: function setItem(key, data) {\n return storage.setItem(key, serialize(data, key));\n },\n removeItem: function removeItem(key) {\n return storage.removeItem(key);\n }\n };\n}\n\nfunction extractPersistConfig(path, persistDefinition) {\n if (persistDefinition === void 0) {\n persistDefinition = {};\n }\n\n return {\n path: path,\n config: {\n blacklist: persistDefinition.blacklist || [],\n mergeStrategy: persistDefinition.mergeStrategy || 'merge',\n storage: createStorageWrapper(persistDefinition.storage, persistDefinition.transformers),\n whitelist: persistDefinition.whitelist || []\n }\n };\n}\n\nfunction resolvePersistTargets(target, whitelist, blacklist) {\n var targets = Object.keys(target);\n\n if (whitelist.length > 0) {\n targets = targets.reduce(function (acc, cur) {\n if (whitelist.findIndex(function (x) {\n return x === cur;\n }) !== -1) {\n return [].concat(acc, [cur]);\n }\n\n return acc;\n }, []);\n }\n\n if (blacklist.length > 0) {\n targets = targets.reduce(function (acc, cur) {\n if (blacklist.findIndex(function (x) {\n return x === cur;\n }) !== -1) {\n return acc;\n }\n\n return [].concat(acc, [cur]);\n }, []);\n }\n\n return targets;\n}\n\nfunction createPersistor(persistKey, references) {\n return debounce(function () {\n references.internals.persistenceConfig.forEach(function (_ref) {\n var path = _ref.path,\n config = _ref.config;\n var storage = config.storage,\n whitelist = config.whitelist,\n blacklist = config.blacklist;\n var state = references.getState();\n var persistRoot = deepCloneStateWithoutComputed(get(path, state));\n var targets = resolvePersistTargets(persistRoot, whitelist, blacklist);\n targets.forEach(function (key) {\n var targetPath = [].concat(path, [key]);\n storage.setItem(persistKey(targetPath), get(targetPath, state));\n });\n });\n }, 1000);\n}\nfunction createPersistMiddleware(persistor, references) {\n return function () {\n return function (next) {\n return function (action) {\n var state = next(action);\n\n if (action && action.type !== '@action.ePRS' && references.internals.persistenceConfig.length > 0) {\n persistor(state);\n }\n\n return state;\n };\n };\n };\n}\nfunction createPersistenceClearer(persistKey, references) {\n return function () {\n return new Promise(function (resolve, reject) {\n references.internals.persistenceConfig.forEach(function (_ref2) {\n var path = _ref2.path,\n config = _ref2.config;\n var storage = config.storage,\n whitelist = config.whitelist,\n blacklist = config.blacklist;\n var persistRoot = get(path, references.getState());\n var targets = resolvePersistTargets(persistRoot, whitelist, blacklist);\n\n if (targets.length > 0) {\n Promise.all(targets.map(function (key) {\n var targetPath = [].concat(path, [key]);\n return storage.removeItem(persistKey(targetPath));\n })).then(function () {\n return resolve();\n }, reject);\n } else {\n resolve();\n }\n });\n });\n };\n}\nfunction rehydrateStateFromPersistIfNeeded(persistKey, replaceState, references) {\n // If we have any persist configs we will attemp to perform a state rehydration\n var resolveRehydration = Promise.resolve();\n\n if (references.internals.persistenceConfig.length > 0) {\n references.internals.persistenceConfig.forEach(function (persistInstance) {\n var path = persistInstance.path,\n config = persistInstance.config;\n var blacklist = config.blacklist,\n mergeStrategy = config.mergeStrategy,\n storage = config.storage,\n whitelist = config.whitelist;\n var state = references.internals.defaultState;\n var persistRoot = deepCloneStateWithoutComputed(get(path, state));\n var targets = resolvePersistTargets(persistRoot, whitelist, blacklist);\n\n var applyRehydrationStrategy = function applyRehydrationStrategy(originalState, rehydratedState) {\n if (mergeStrategy === 'overwrite') {\n set(path, originalState, rehydratedState);\n } else if (mergeStrategy === 'merge') {\n var target = get(path, originalState);\n Object.keys(rehydratedState).forEach(function (key) {\n target[key] = rehydratedState[key];\n });\n } else if (mergeStrategy === 'mergeDeep') {\n var _target = get(path, originalState);\n\n var setAt = function setAt(currentTarget, currentNext) {\n Object.keys(currentNext).forEach(function (key) {\n var data = currentNext[key];\n\n if (isPlainObject(data)) {\n if (!isPlainObject(currentTarget[key])) {\n currentTarget[key] = {};\n }\n\n setAt(currentTarget[key], data);\n } else {\n currentTarget[key] = data;\n }\n });\n };\n\n setAt(_target, rehydratedState);\n }\n };\n\n if (storage.isAsync) {\n var asyncStateResolvers = targets.reduce(function (acc, key) {\n var targetPath = [].concat(path, [key]);\n var dataPromise = storage.getItem(persistKey(targetPath));\n\n if (isPromise(dataPromise)) {\n acc.push({\n key: key,\n dataPromise: dataPromise\n });\n }\n\n return acc;\n }, []);\n\n if (asyncStateResolvers.length > 0) {\n resolveRehydration = Promise.all(asyncStateResolvers.map(function (x) {\n return x.dataPromise;\n })).then(function (resolvedData) {\n var next = resolvedData.reduce(function (acc, cur, idx) {\n var key = asyncStateResolvers[idx].key;\n\n if (cur !== undefined) {\n acc[key] = cur;\n }\n\n return acc;\n }, {});\n\n if (Object.keys(next).length === 0) {\n return;\n }\n\n applyRehydrationStrategy(state, next);\n replaceState(state);\n });\n }\n } else {\n var next = targets.reduce(function (acc, key) {\n var targetPath = [].concat(path, [key]);\n var data = storage.getItem(persistKey(targetPath));\n\n if (data !== undefined) {\n acc[key] = data;\n }\n\n return acc;\n }, {});\n applyRehydrationStrategy(state, next);\n replaceState(state);\n }\n });\n }\n\n return resolveRehydration;\n}\n\nfunction createActionCreator(actionDefinition, meta, references) {\n var prefix = actionDefinition[actionSymbol] ? '@action' : '@actionOn';\n var type = prefix + \".\" + meta.path.join('.');\n var actionMeta = actionDefinition[actionSymbol] || actionDefinition[actionOnSymbol];\n actionMeta.actionName = meta.key;\n actionMeta.type = type;\n actionMeta.parent = meta.parent;\n actionMeta.path = meta.path;\n\n var actionCreator = function actionCreator(payload) {\n var action = {\n type: type,\n payload: payload\n };\n\n if (actionDefinition[actionOnSymbol] && actionMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(actionMeta.resolvedTargets);\n }\n\n var result = references.dispatch(action);\n return result;\n };\n\n actionCreator.type = type;\n return actionCreator;\n}\n\nfunction createThunkHandler(thunkDefinition, meta, references, injections, actionCreators) {\n var thunkMeta = thunkDefinition[thunkSymbol] || thunkDefinition[thunkOnSymbol];\n return function (payload) {\n var helpers = {\n dispatch: references.dispatch,\n getState: function getState() {\n return get(meta.parent, 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 (thunkDefinition[thunkOnSymbol] && thunkMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(thunkMeta.resolvedTargets);\n }\n\n return thunkDefinition(get(meta.parent, actionCreators), payload, helpers);\n };\n}\nfunction createThunkActionsCreator(thunkDefinition, meta, references, thunkHandler) {\n var prefix = thunkDefinition[thunkSymbol] ? '@thunk' : '@thunkOn';\n var type = prefix + \".\" + meta.path.join('.');\n var startType = type + \"(start)\";\n var successType = type + \"(success)\";\n var failType = type + \"(fail)\";\n var thunkMeta = thunkDefinition[thunkSymbol] || thunkDefinition[thunkOnSymbol];\n thunkMeta.type = type;\n thunkMeta.actionName = meta.key;\n thunkMeta.parent = meta.parent;\n thunkMeta.path = meta.path;\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 (isPromise(result)) {\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 return actionCreator;\n}\n\nfunction createListenerMiddleware(references) {\n return function () {\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}\nfunction bindListenerDefinitions(listenerDefinitions, actionCreators, actionCreatorDict, listenerActionMap) {\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\nfunction createComputedPropertyBinder(parentPath, key, definition, computedState, references) {\n var computedMeta = definition[computedSymbol];\n var memoisedResultFn = memoizerific(1)(definition);\n return 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 === 'development') {\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}\nfunction createComputedPropertiesMiddleware(references) {\n return function (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\nfunction extractDataFromModel(model, initialState, injections, references) {\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 persistenceConfig = [];\n var computedState = {\n isInReducer: false,\n currentState: defaultState\n };\n\n var recursiveExtractFromModel = function recursiveExtractFromModel(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 key: key\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 (key === persistSymbol) {\n persistenceConfig.push(extractPersistConfig(parentPath, value));\n return;\n }\n\n if (typeof value === 'function') {\n if (value[actionSymbol] || value[actionOnSymbol]) {\n var actionReducer = value;\n var actionCreator = createActionCreator(value, meta, references);\n actionCreatorDict[actionCreator.type] = actionCreator;\n actionReducersDict[actionCreator.type] = actionReducer;\n\n if (meta.key !== 'ePRS') {\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 thunkHandler = createThunkHandler(value, meta, references, injections, actionCreators);\n\n var _actionCreator = createThunkActionsCreator(value, meta, references, thunkHandler);\n\n set(path, actionThunks, thunkHandler);\n actionCreatorDict[_actionCreator.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 var bindComputedProperty = createComputedPropertyBinder(parentPath, key, value, computedState, references);\n bindComputedProperty(parent);\n computedProperties.push({\n key: key,\n parentPath: parentPath,\n bindComputedProperty: bindComputedProperty\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 (isPlainObject(value)) {\n var existing = get(path, defaultState);\n\n if (existing == null) {\n set(path, defaultState, {});\n }\n\n recursiveExtractFromModel(value, path);\n } else {\n handleValueAsState();\n }\n });\n };\n\n recursiveExtractFromModel(model, []);\n bindListenerDefinitions(listenerDefinitions, actionCreators, actionCreatorDict, listenerActionMap);\n return {\n actionCreatorDict: actionCreatorDict,\n actionCreators: actionCreators,\n actionReducersDict: actionReducersDict,\n computedProperties: computedProperties,\n customReducers: customReducers,\n computedState: computedState,\n defaultState: defaultState,\n listenerActionCreators: listenerActionCreators,\n listenerActionMap: listenerActionMap,\n persistenceConfig: persistenceConfig\n };\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 var _extractDataFromModel = extractDataFromModel(model, initialState, injections, references),\n actionCreatorDict = _extractDataFromModel.actionCreatorDict,\n actionCreators = _extractDataFromModel.actionCreators,\n actionReducersDict = _extractDataFromModel.actionReducersDict,\n computedState = _extractDataFromModel.computedState,\n computedProperties = _extractDataFromModel.computedProperties,\n customReducers = _extractDataFromModel.customReducers,\n defaultState = _extractDataFromModel.defaultState,\n listenerActionCreators = _extractDataFromModel.listenerActionCreators,\n listenerActionMap = _extractDataFromModel.listenerActionMap,\n persistenceConfig = _extractDataFromModel.persistenceConfig;\n\n var rootReducer = createReducer(disableImmer, actionReducersDict, customReducers, computedProperties);\n return {\n actionCreatorDict: actionCreatorDict,\n actionCreators: actionCreators,\n computedProperties: computedProperties,\n computedState: computedState,\n defaultState: defaultState,\n listenerActionCreators: listenerActionCreators,\n listenerActionMap: listenerActionMap,\n persistenceConfig: persistenceConfig,\n reducer: reducerEnhancer(rootReducer)\n };\n}\n\nfunction createStore(model, options) {\n if (options === void 0) {\n options = {};\n }\n\n var modelClone = deepCloneStateWithoutComputed(model);\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 ePRS: action(function (_, payload) {\n return payload;\n })\n });\n };\n\n var references = {};\n var modelDefinition = bindReplaceState(modelClone);\n var mockedActions = [];\n\n var persistKey = function persistKey(targetPath) {\n return \"[\" + storeName + \"]@\" + targetPath.join('.');\n };\n\n var persistor = createPersistor(persistKey, references);\n var persistMiddleware = createPersistMiddleware(persistor, references);\n var clearPersistance = createPersistenceClearer(persistKey, references);\n\n var replaceState = function replaceState(nextState) {\n return references.internals.actionCreatorDict['@action.ePRS'](nextState);\n };\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 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 composeEnhancers = compose$1 || (devTools && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: storeName\n }) : compose);\n bindStoreInternals(initialState);\n var easyPeasyMiddleware = [createComputedPropertiesMiddleware(references), reduxThunk].concat(middleware, [createListenerMiddleware(references), persistMiddleware]);\n\n if (mockActions) {\n easyPeasyMiddleware.push(mockActionsMiddleware);\n }\n\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(currentState);\n store.replaceReducer(references.internals.reducer);\n replaceState(references.internals.defaultState);\n bindActionCreators();\n };\n\n var _resolveRehydration = rehydrateStateFromPersistIfNeeded(persistKey, replaceState, references);\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 persist: {\n clear: clearPersistance,\n flush: function flush() {\n return persistor.flush();\n },\n resolveRehydration: function resolveRehydration() {\n return _resolveRehydration;\n }\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 useStoreRehydrated: createStoreRehydratedHook(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\n/**\n * This file has been copied from redux-persist.\n * The intention being to support as much of the redux-persist API as possible.\n */\nfunction createTransform(inbound, outbound, config) {\n if (config === void 0) {\n config = {};\n }\n\n var whitelist = config.whitelist || null;\n var blacklist = config.blacklist || null;\n\n function whitelistBlacklistCheck(key) {\n if (whitelist && whitelist.indexOf(key) === -1) return true;\n if (blacklist && blacklist.indexOf(key) !== -1) return true;\n return false;\n }\n\n return {\n in: function _in(data, key, fullState) {\n return !whitelistBlacklistCheck(key) && inbound ? inbound(data, key, fullState) : data;\n },\n out: function out(data, key, fullState) {\n return !whitelistBlacklistCheck(key) && outbound ? outbound(data, key, fullState) : data;\n }\n };\n}\n\nfunction 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, createTransform, createTypedHooks, debug, memo, persist, reducer, thunk, thunkOn, useStore, useStoreActions, useStoreDispatch, useStoreRehydrated, 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","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","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\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","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\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(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","export default function(x) {\n return function() {\n return x;\n };\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 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","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","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 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\";\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","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 var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\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","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","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","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 interrupt from \"../interrupt\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\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 {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 {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 {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 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 {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 {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","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","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 {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 {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","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","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","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","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 {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\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","/** @license React v16.10.2\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\nvar lowPriorityWarningWithoutStack = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarningWithoutStack = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarningWithoutStack(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(void 0, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarningWithoutStack$1 = lowPriorityWarningWithoutStack;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarningWithoutStack$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nexport function 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}\nexport function isFunction(func\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\nexport function isNum(num\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof num === 'number' && !isNaN(num);\n}\nexport function int(a\n/*: string*/\n)\n/*: number*/\n{\n return parseInt(a, 10);\n}\nexport function 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}","const prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nexport function 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}\nexport function browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\nexport function 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\nexport default getPrefix();","import { findInArray, isFunction, int } from './shims';\nimport browserPrefix, { browserPrefixToKey } from './getPrefix';\n/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/\n\nlet matchesSelectorFunc = '';\nexport function matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = findInArray(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return 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 (!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\nexport function 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}\nexport function addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n\n if (el.addEventListener) {\n el.addEventListener(event, handler, options);\n } else if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\nexport function removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n\n if (el.removeEventListener) {\n el.removeEventListener(event, handler, options);\n } else if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\nexport function 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 += int(computedStyle.borderTopWidth);\n height += int(computedStyle.borderBottomWidth);\n return height;\n}\nexport function 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 += int(computedStyle.borderLeftWidth);\n width += int(computedStyle.borderRightWidth);\n return width;\n}\nexport function innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= int(computedStyle.paddingTop);\n height -= int(computedStyle.paddingBottom);\n return height;\n}\nexport function innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= int(computedStyle.paddingLeft);\n width -= int(computedStyle.paddingRight);\n return width;\n} // Get from offsetParent\n\nexport function offsetXYFromParent(evt\n/*: {clientX: number, clientY: number}*/\n, offsetParent\n/*: HTMLElement*/\n, scale\n/*: number*/\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) / scale;\n const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n return {\n x,\n y\n };\n}\nexport function createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [browserPrefixToKey('transform', browserPrefix)]: translation\n };\n}\nexport function createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\nexport function 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}\nexport function getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n return e.targetTouches && findInArray(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && findInArray(e.changedTouches, t => identifier === t.identifier);\n}\nexport function 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\nexport function 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}\nexport function removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n\n try {\n if (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 // Remove selection caused by scroll, unless it's a focused input\n // (we use doc.defaultView in case we're in an iframe)\n const selection = (doc.defaultView || window).getSelection();\n\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {// probably IE\n }\n}\nexport function 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}\nexport function 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}","import { isNum, int } from './shims';\nimport ReactDOM from 'react-dom';\nimport { getTouch, innerWidth, innerHeight, offsetXYFromParent, outerWidth, outerHeight } from './domFns';\n/*:: import type Draggable from '../Draggable';*/\n\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n\n/*:: import type DraggableCore from '../DraggableCore';*/\n\nexport function 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 + int(boundNodeStyle.paddingLeft) + int(nodeStyle.marginLeft),\n top: -node.offsetTop + int(boundNodeStyle.paddingTop) + int(nodeStyle.marginTop),\n right: innerWidth(boundNode) - outerWidth(node) - node.offsetLeft + int(boundNodeStyle.paddingRight) - int(nodeStyle.marginRight),\n bottom: innerHeight(boundNode) - outerHeight(node) - node.offsetTop + int(boundNodeStyle.paddingBottom) - int(nodeStyle.marginBottom)\n };\n } // Keep x and y below right and bottom limits...\n\n\n if (isNum(bounds.right)) x = Math.min(x, bounds.right);\n if (isNum(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n if (isNum(bounds.left)) x = Math.max(x, bounds.left);\n if (isNum(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\nexport function 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}\nexport function canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\nexport function 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\nexport function getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n const touchObj = typeof touchIdentifier === 'number' ? 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 offsetXYFromParent(touchObj || e, offsetParent, draggableCore.props.scale);\n} // Create an data object exposed by 's events\n\nexport function createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n const state = draggable.state;\n const isStart = !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\nexport function 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\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.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}","/*eslint no-console:0*/\nexport default function log(...args) {\n if (undefined) console.log(...args);\n}","function _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\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport { matchesSelectorAndParentsTo, addEvent, removeEvent, addUserSelectStyles, getTouchIdentifier, removeUserSelectStyles } from './utils/domFns';\nimport { createCoreData, getControlPosition, snapToGrid } from './utils/positionFns';\nimport { dontSetMe } from './utils/shims';\nimport log from './utils/log';\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n\n/*:: import type {Element as ReactElement} from 'react';*/\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 scale: number,\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//\nexport default class DraggableCore extends React.Component\n/*:: */\n{\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, \"mounted\", false);\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.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 && !matchesSelectorAndParentsTo(e.target, this.props.handle, thisNode) || this.props.cancel && matchesSelectorAndParentsTo(e.target, this.props.cancel, thisNode)) {\n return;\n } // Prevent scrolling on mobile devices, like ipad/iphone.\n // Important that this is after handle/cancel.\n\n\n if (e.type === 'touchstart') e.preventDefault(); // 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 const touchIdentifier = 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 = 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 = createCoreData(this, x, y);\n log('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n log('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false || this.mounted === 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) 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 addEvent(ownerDocument, dragEventFor.move, this.handleDrag);\n addEvent(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n\n _defineProperty(this, \"handleDrag\", e => {\n // Get the current drag point from the event. This is used as the offset.\n const position = 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] = 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 = createCoreData(this, x, y);\n log('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 || this.mounted === 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 = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {\n x,\n y\n } = position;\n const coreEvent = createCoreData(this, x, y); // Call event handler\n\n const shouldContinue = this.props.onStop(e, coreEvent);\n if (shouldContinue === false || this.mounted === false) return false;\n const thisNode = ReactDOM.findDOMNode(this);\n\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) removeUserSelectStyles(thisNode.ownerDocument);\n }\n\n log('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n if (thisNode) {\n // Remove event handlers\n log('DraggableCore: Removing handlers');\n removeEvent(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n 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 componentDidMount() {\n this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n\n const thisNode = ReactDOM.findDOMNode(this);\n\n if (thisNode) {\n addEvent(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n }\n }\n\n componentWillUnmount() {\n this.mounted = false; // 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\n const thisNode = ReactDOM.findDOMNode(this);\n\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n removeEvent(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.touch.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n removeEvent(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n removeEvent(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n if (this.props.enableUserSelectHack) 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.cloneElement(React.Children.only(this.props.children), {\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 onMouseUp: this.onMouseUp,\n // onTouchStart is added on `componentDidMount` so they can be added with\n // {passive: false}, which allows it to cancel. See \n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n onTouchEnd: this.onTouchEnd\n });\n }\n\n}\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.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.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.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.arrayOf(PropTypes.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.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.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: PropTypes.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: PropTypes.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.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.func,\n\n /**\n * `scale`, if set, applies scaling while dragging an element\n */\n scale: PropTypes.number,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: 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 scale: 1\n});","function _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\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { createCSSTransform, createSVGTransform } from './utils/domFns';\nimport { canDragX, canDragY, createDraggableData, getBoundPosition } from './utils/positionFns';\nimport { dontSetMe } from './utils/shims';\nimport DraggableCore from './DraggableCore';\n/*:: import type {ControlPosition, PositionOffsetControlPosition, DraggableBounds, DraggableCoreProps} from './DraggableCore';*/\n\nimport log from './utils/log';\n/*:: import type {DraggableEventHandler} from './utils/types';*/\n\n/*:: import type {Element as ReactElement} from 'react';*/\n\n/*:: type DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean,\n prevPropsPosition: ?ControlPosition,\n};*/\n\n/*:: export type DraggableProps = {\n ...$Exact,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: DraggableBounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n positionOffset: PositionOffsetControlPosition,\n position: ControlPosition,\n scale: number\n};*/\n\n//\n// Define \n//\nclass Draggable extends React.Component\n/*:: */\n{\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 log('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 log('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n const shouldStart = this.props.onStart(e, 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 log('Draggable: onDrag: %j', coreData);\n const uiData = 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] = 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 shouldContinue = this.props.onStop(e, createDraggableData(this, coreData));\n if (shouldContinue === false) return false;\n log('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.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: canDragX(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: 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 = 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 = createCSSTransform(transformOpts, positionOffset);\n } // Mark with class while dragging\n\n\n const className = classNames(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 /*#__PURE__*/React.createElement(DraggableCore, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), React.cloneElement(React.Children.only(children), {\n className: className,\n style: { ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n\n}\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", { // Accepts all props accepts.\n ...DraggableCore.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.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.oneOfType([PropTypes.shape({\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number,\n bottom: PropTypes.number\n }), PropTypes.string, PropTypes.oneOf([false])]),\n defaultClassName: PropTypes.string,\n defaultClassNameDragging: PropTypes.string,\n defaultClassNameDragged: PropTypes.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.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n positionOffset: PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.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.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n});\n\n_defineProperty(Draggable, \"defaultProps\", { ...DraggableCore.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});\n\nexport { Draggable as default, DraggableCore };","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect = function (target) {\n if ('getBBox' in target) {\n var box = target.getBBox();\n return Object.freeze({\n height: box.height,\n left: 0,\n top: 0,\n width: box.width,\n });\n }\n else { // if (target instanceof HTMLElement) { // also includes all other non-SVGGraphicsElements\n var styles = window.getComputedStyle(target);\n return Object.freeze({\n height: parseFloat(styles.height || '0'),\n left: parseFloat(styles.paddingLeft || '0'),\n top: parseFloat(styles.paddingTop || '0'),\n width: parseFloat(styles.width || '0'),\n });\n }\n};\nexports.ContentRect = ContentRect;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudFJlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29udGVudFJlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSxJQUFNLFdBQVcsR0FBRyxVQUFDLE1BQWU7SUFDaEMsSUFBSSxTQUFTLElBQUssTUFBNkIsRUFBRTtRQUM3QyxJQUFNLEdBQUcsR0FBSSxNQUE2QixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNqQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDbEIsSUFBSSxFQUFFLENBQUM7WUFDUCxHQUFHLEVBQUUsQ0FBQztZQUNOLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztTQUNuQixDQUFDLENBQUM7S0FDTjtTQUFNLEVBQUUsMEZBQTBGO1FBQy9GLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDakIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztZQUN4QyxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDO1lBQzNDLEdBQUcsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7WUFDekMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztTQUN6QyxDQUFDLENBQUM7S0FDTjtBQUNMLENBQUMsQ0FBQztBQUVPLGtDQUFXIn0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect_1 = require(\"./ContentRect\");\nvar ResizeObservation = /** @class */ (function () {\n function ResizeObservation(target) {\n this.target = target;\n this.$$broadcastWidth = this.$$broadcastHeight = 0;\n }\n Object.defineProperty(ResizeObservation.prototype, \"broadcastWidth\", {\n get: function () {\n return this.$$broadcastWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ResizeObservation.prototype, \"broadcastHeight\", {\n get: function () {\n return this.$$broadcastHeight;\n },\n enumerable: true,\n configurable: true\n });\n ResizeObservation.prototype.isActive = function () {\n var cr = ContentRect_1.ContentRect(this.target);\n return !!cr\n && (cr.width !== this.broadcastWidth\n || cr.height !== this.broadcastHeight);\n };\n return ResizeObservation;\n}());\nexports.ResizeObservation = ResizeObservation;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVzaXplT2JzZXJ2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBNEM7QUFFNUM7SUFlSSwyQkFBWSxNQUFlO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFWRCxzQkFBVyw2Q0FBYzthQUF6QjtZQUNJLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ2pDLENBQUM7OztPQUFBO0lBQ0Qsc0JBQVcsOENBQWU7YUFBMUI7WUFDSSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNsQyxDQUFDOzs7T0FBQTtJQU9NLG9DQUFRLEdBQWY7UUFDSSxJQUFNLEVBQUUsR0FBRyx5QkFBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwQyxPQUFPLENBQUMsQ0FBQyxFQUFFO2VBQ0osQ0FDQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxjQUFjO21CQUM3QixFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQ3hDLENBQUM7SUFDVixDQUFDO0lBQ0wsd0JBQUM7QUFBRCxDQUFDLEFBN0JELElBNkJDO0FBRVEsOENBQWlCIn0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect_1 = require(\"./ContentRect\");\nvar ResizeObserverEntry = /** @class */ (function () {\n function ResizeObserverEntry(target) {\n this.target = target;\n this.contentRect = ContentRect_1.ContentRect(target);\n }\n return ResizeObserverEntry;\n}());\nexports.ResizeObserverEntry = ResizeObserverEntry;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2ZXJFbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9SZXNpemVPYnNlcnZlckVudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQTRDO0FBRTVDO0lBR0ksNkJBQVksTUFBZTtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLHlCQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNMLDBCQUFDO0FBQUQsQ0FBQyxBQVBELElBT0M7QUFFUSxrREFBbUIifQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ResizeObservation_1 = require(\"./ResizeObservation\");\nvar ResizeObserverEntry_1 = require(\"./ResizeObserverEntry\");\nvar resizeObservers = [];\nvar ResizeObserver = /** @class */ (function () {\n function ResizeObserver(callback) {\n /** @internal */\n this.$$observationTargets = [];\n /** @internal */\n this.$$activeTargets = [];\n /** @internal */\n this.$$skippedTargets = [];\n var message = callbackGuard(callback);\n if (message) {\n throw TypeError(message);\n }\n this.$$callback = callback;\n resizeObservers.push(this);\n }\n ResizeObserver.prototype.observe = function (target) {\n var message = targetGuard('observe', target);\n if (message) {\n throw TypeError(message);\n }\n var index = findTargetIndex(this.$$observationTargets, target);\n if (index > 0) {\n return;\n }\n this.$$observationTargets.push(new ResizeObservation_1.ResizeObservation(target));\n startLoop();\n };\n ResizeObserver.prototype.unobserve = function (target) {\n var message = targetGuard('unobserve', target);\n if (message) {\n throw TypeError(message);\n }\n var index = findTargetIndex(this.$$observationTargets, target);\n if (index < 0) {\n return;\n }\n this.$$observationTargets.splice(index, 1);\n checkStopLoop();\n };\n ResizeObserver.prototype.disconnect = function () {\n this.$$observationTargets = [];\n this.$$activeTargets = [];\n };\n return ResizeObserver;\n}());\nexports.ResizeObserver = ResizeObserver;\nfunction callbackGuard(callback) {\n if (typeof (callback) === 'undefined') {\n return \"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\";\n }\n if (typeof (callback) !== 'function') {\n return \"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\";\n }\n}\nfunction targetGuard(functionName, target) {\n if (typeof (target) === 'undefined') {\n return \"Failed to execute '\" + functionName + \"' on 'ResizeObserver': 1 argument required, but only 0 present.\";\n }\n if (!(target instanceof window.Element)) {\n return \"Failed to execute '\" + functionName + \"' on 'ResizeObserver': parameter 1 is not of type 'Element'.\";\n }\n}\nfunction findTargetIndex(collection, target) {\n for (var index = 0; index < collection.length; index += 1) {\n if (collection[index].target === target) {\n return index;\n }\n }\n return -1;\n}\nvar gatherActiveObservationsAtDepth = function (depth) {\n resizeObservers.forEach(function (ro) {\n ro.$$activeTargets = [];\n ro.$$skippedTargets = [];\n ro.$$observationTargets.forEach(function (ot) {\n if (ot.isActive()) {\n var targetDepth = calculateDepthForNode(ot.target);\n if (targetDepth > depth) {\n ro.$$activeTargets.push(ot);\n }\n else {\n ro.$$skippedTargets.push(ot);\n }\n }\n });\n });\n};\nvar hasActiveObservations = function () {\n return resizeObservers.some(function (ro) { return !!ro.$$activeTargets.length; });\n};\nvar hasSkippedObservations = function () {\n return resizeObservers.some(function (ro) { return !!ro.$$skippedTargets.length; });\n};\nvar broadcastActiveObservations = function () {\n var shallowestTargetDepth = Infinity;\n resizeObservers.forEach(function (ro) {\n if (!ro.$$activeTargets.length) {\n return;\n }\n var entries = [];\n ro.$$activeTargets.forEach(function (obs) {\n var entry = new ResizeObserverEntry_1.ResizeObserverEntry(obs.target);\n entries.push(entry);\n obs.$$broadcastWidth = entry.contentRect.width;\n obs.$$broadcastHeight = entry.contentRect.height;\n var targetDepth = calculateDepthForNode(obs.target);\n if (targetDepth < shallowestTargetDepth) {\n shallowestTargetDepth = targetDepth;\n }\n });\n ro.$$callback(entries, ro);\n ro.$$activeTargets = [];\n });\n return shallowestTargetDepth;\n};\nvar deliverResizeLoopErrorNotification = function () {\n var errorEvent = new window.ErrorEvent('ResizeLoopError', {\n message: 'ResizeObserver loop completed with undelivered notifications.',\n });\n window.dispatchEvent(errorEvent);\n};\nvar calculateDepthForNode = function (target) {\n var depth = 0;\n while (target.parentNode) {\n target = target.parentNode;\n depth += 1;\n }\n return depth;\n};\nvar notificationIteration = function () {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopErrorNotification();\n }\n};\nvar animationFrameCancelToken;\nvar startLoop = function () {\n if (animationFrameCancelToken)\n return;\n runLoop();\n};\nvar runLoop = function () {\n animationFrameCancelToken = window.requestAnimationFrame(function () {\n notificationIteration();\n runLoop();\n });\n};\nvar checkStopLoop = function () {\n if (animationFrameCancelToken && !resizeObservers.some(function (ro) { return !!ro.$$observationTargets.length; })) {\n window.cancelAnimationFrame(animationFrameCancelToken);\n animationFrameCancelToken = undefined;\n }\n};\nvar install = function () {\n return window.ResizeObserver = ResizeObserver;\n};\nexports.install = install;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVzaXplT2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5REFBd0Q7QUFFeEQsNkRBQTREO0FBRTVELElBQU0sZUFBZSxHQUFHLEVBQXNCLENBQUM7QUFFL0M7SUFVSSx3QkFBWSxRQUFnQztRQVA1QyxnQkFBZ0I7UUFDVCx5QkFBb0IsR0FBRyxFQUF5QixDQUFDO1FBQ3hELGdCQUFnQjtRQUNULG9CQUFlLEdBQUcsRUFBeUIsQ0FBQztRQUNuRCxnQkFBZ0I7UUFDVCxxQkFBZ0IsR0FBRyxFQUF5QixDQUFDO1FBR2hELElBQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxJQUFJLE9BQU8sRUFBRTtZQUNULE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0IsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sZ0NBQU8sR0FBZCxVQUFlLE1BQWU7UUFDMUIsSUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJLE9BQU8sRUFBRTtZQUNULE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDWCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUkscUNBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM5RCxTQUFTLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU0sa0NBQVMsR0FBaEIsVUFB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","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":["ponyfill","$$observable","ownKeys","require$$0","MapOrSimilar","isPlainObject","get","set","debounce","createStore","reduxThunk","createStore$1","React","parseTypenames","root","constant","rgb","colorRgb","number","timeout","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","interpolateTransform","Selection","style","styleRemove","styleConstant","styleFunction","textConstant","textFunction","easeCubicInOut","identity","noevent","dragEnable","ReactPropTypesSecret","has","printWarning","ReactIs","assign","checkPropTypes","require$$1","_defineProperty","PropTypes","_extends","classNames"],"mappings":"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"} \ No newline at end of file diff --git a/dist/ReactFlow.js b/dist/ReactFlow.js deleted file mode 100644 index 08eb1228..00000000 --- a/dist/ReactFlow.js +++ /dev/null @@ -1,10563 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var React = require('react'); -var React__default = _interopDefault(React); -var ReactDOM = _interopDefault(require('react-dom')); - -var obj; -var NOTHING = typeof Symbol !== "undefined" ? Symbol("immer-nothing") : ( obj = {}, obj["immer-nothing"] = true, obj ); -var DRAFTABLE = typeof Symbol !== "undefined" && Symbol.for ? Symbol.for("immer-draftable") : "__$immer_draftable"; -var DRAFT_STATE = typeof Symbol !== "undefined" && Symbol.for ? Symbol.for("immer-state") : "__$immer_state"; -function isDraft(value) { - return !!value && !!value[DRAFT_STATE]; -} -function isDraftable(value) { - if (!value || typeof value !== "object") { return false; } - if (Array.isArray(value)) { return true; } - var proto = Object.getPrototypeOf(value); - if (!proto || proto === Object.prototype) { return true; } - return !!value[DRAFTABLE] || !!value.constructor[DRAFTABLE]; -} -var assign = Object.assign || function assign(target, value) { - for (var key in value) { - if (has(value, key)) { - target[key] = value[key]; - } - } - - return target; -}; -var ownKeys = typeof Reflect !== "undefined" && Reflect.ownKeys ? Reflect.ownKeys : typeof Object.getOwnPropertySymbols !== "undefined" ? function (obj) { return Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj)); } : Object.getOwnPropertyNames; -function shallowCopy(base, invokeGetters) { - if ( invokeGetters === void 0 ) invokeGetters = false; - - if (Array.isArray(base)) { return base.slice(); } - var clone = Object.create(Object.getPrototypeOf(base)); - ownKeys(base).forEach(function (key) { - if (key === DRAFT_STATE) { - return; // Never copy over draft state. - } - - var desc = Object.getOwnPropertyDescriptor(base, key); - var value = desc.value; - - if (desc.get) { - if (invokeGetters) { - value = desc.get.call(base); - } - } - - if (desc.enumerable) { - clone[key] = value; - } else if (invokeGetters) { - Object.defineProperty(clone, key, { - value: value, - writable: true, - configurable: true - }); - } - }); - return clone; -} -function each(value, cb) { - if (Array.isArray(value)) { - for (var i = 0; i < value.length; i++) { cb(i, value[i], value); } - } else { - ownKeys(value).forEach(function (key) { return cb(key, value[key], value); }); - } -} -function isEnumerable(base, prop) { - var desc = Object.getOwnPropertyDescriptor(base, prop); - return !!desc && desc.enumerable; -} -function has(thing, prop) { - return Object.prototype.hasOwnProperty.call(thing, prop); -} -function is(x, y) { - // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js - if (x === y) { - return x !== 0 || 1 / x === 1 / y; - } else { - return x !== x && y !== y; - } -} - -/** Each scope represents a `produce` call. */ - -var ImmerScope = function ImmerScope(parent) { - this.drafts = []; - this.parent = parent; // Whenever the modified draft contains a draft from another scope, we - // need to prevent auto-freezing so the unowned draft can be finalized. - - this.canAutoFreeze = true; // To avoid prototype lookups: - - this.patches = null; -}; - -ImmerScope.prototype.usePatches = function usePatches (patchListener) { - if (patchListener) { - this.patches = []; - this.inversePatches = []; - this.patchListener = patchListener; - } -}; - -ImmerScope.prototype.revoke = function revoke$1 () { - this.leave(); - this.drafts.forEach(revoke); - this.drafts = null; // Make draft-related methods throw. -}; - -ImmerScope.prototype.leave = function leave () { - if (this === ImmerScope.current) { - ImmerScope.current = this.parent; - } -}; -ImmerScope.current = null; - -ImmerScope.enter = function () { - return this.current = new ImmerScope(this.current); -}; - -function revoke(draft) { - draft[DRAFT_STATE].revoke(); -} - -// but share them all instead - -var descriptors = {}; -function willFinalize(scope, result, isReplaced) { - scope.drafts.forEach(function (draft) { - draft[DRAFT_STATE].finalizing = true; - }); - - if (!isReplaced) { - if (scope.patches) { - markChangesRecursively(scope.drafts[0]); - } // This is faster when we don't care about which attributes changed. - - - markChangesSweep(scope.drafts); - } // When a child draft is returned, look for changes. - else if (isDraft(result) && result[DRAFT_STATE].scope === scope) { - markChangesSweep(scope.drafts); - } -} -function createProxy(base, parent) { - var isArray = Array.isArray(base); - var draft = clonePotentialDraft(base); - each(draft, function (prop) { - proxyProperty(draft, prop, isArray || isEnumerable(base, prop)); - }); // See "proxy.js" for property documentation. - - var scope = parent ? parent.scope : ImmerScope.current; - var state = { - scope: scope, - modified: false, - finalizing: false, - // es5 only - finalized: false, - assigned: {}, - parent: parent, - base: base, - draft: draft, - copy: null, - revoke: revoke$1, - revoked: false // es5 only - - }; - createHiddenProperty(draft, DRAFT_STATE, state); - scope.drafts.push(draft); - return draft; -} - -function revoke$1() { - this.revoked = true; -} - -function source(state) { - return state.copy || state.base; -} // Access a property without creating an Immer draft. - - -function peek(draft, prop) { - var state = draft[DRAFT_STATE]; - - if (state && !state.finalizing) { - state.finalizing = true; - var value = draft[prop]; - state.finalizing = false; - return value; - } - - return draft[prop]; -} - -function get(state, prop) { - assertUnrevoked(state); - var value = peek(source(state), prop); - if (state.finalizing) { return value; } // Create a draft if the value is unmodified. - - if (value === peek(state.base, prop) && isDraftable(value)) { - prepareCopy(state); - return state.copy[prop] = createProxy(value, state); - } - - return value; -} - -function set(state, prop, value) { - assertUnrevoked(state); - state.assigned[prop] = true; - - if (!state.modified) { - if (is(value, peek(source(state), prop))) { return; } - markChanged(state); - prepareCopy(state); - } - - state.copy[prop] = value; -} - -function markChanged(state) { - if (!state.modified) { - state.modified = true; - if (state.parent) { markChanged(state.parent); } - } -} - -function prepareCopy(state) { - if (!state.copy) { state.copy = clonePotentialDraft(state.base); } -} - -function clonePotentialDraft(base) { - var state = base && base[DRAFT_STATE]; - - if (state) { - state.finalizing = true; - var draft = shallowCopy(state.draft, true); - state.finalizing = false; - return draft; - } - - return shallowCopy(base); -} - -function proxyProperty(draft, prop, enumerable) { - var desc = descriptors[prop]; - - if (desc) { - desc.enumerable = enumerable; - } else { - descriptors[prop] = desc = { - configurable: true, - enumerable: enumerable, - - get: function get$1() { - return get(this[DRAFT_STATE], prop); - }, - - set: function set$1(value) { - set(this[DRAFT_STATE], prop, value); - } - - }; - } - - Object.defineProperty(draft, prop, desc); -} - -function assertUnrevoked(state) { - 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))); } -} // This looks expensive, but only proxies are visited, and only objects without known changes are scanned. - - -function markChangesSweep(drafts) { - // The natural order of drafts in the `scope` array is based on when they - // were accessed. By processing drafts in reverse natural order, we have a - // better chance of processing leaf nodes first. When a leaf node is known to - // have changed, we can avoid any traversal of its ancestor nodes. - for (var i = drafts.length - 1; i >= 0; i--) { - var state = drafts[i][DRAFT_STATE]; - - if (!state.modified) { - if (Array.isArray(state.base)) { - if (hasArrayChanges(state)) { markChanged(state); } - } else if (hasObjectChanges(state)) { markChanged(state); } - } - } -} - -function markChangesRecursively(object) { - if (!object || typeof object !== "object") { return; } - var state = object[DRAFT_STATE]; - if (!state) { return; } - var base = state.base; - var draft = state.draft; - var assigned = state.assigned; - - if (!Array.isArray(object)) { - // Look for added keys. - Object.keys(draft).forEach(function (key) { - // The `undefined` check is a fast path for pre-existing keys. - if (base[key] === undefined && !has(base, key)) { - assigned[key] = true; - markChanged(state); - } else if (!assigned[key]) { - // Only untouched properties trigger recursion. - markChangesRecursively(draft[key]); - } - }); // Look for removed keys. - - Object.keys(base).forEach(function (key) { - // The `undefined` check is a fast path for pre-existing keys. - if (draft[key] === undefined && !has(draft, key)) { - assigned[key] = false; - markChanged(state); - } - }); - } else if (hasArrayChanges(state)) { - markChanged(state); - assigned.length = true; - - if (draft.length < base.length) { - for (var i = draft.length; i < base.length; i++) { assigned[i] = false; } - } else { - for (var i$1 = base.length; i$1 < draft.length; i$1++) { assigned[i$1] = true; } - } - - for (var i$2 = 0; i$2 < draft.length; i$2++) { - // Only untouched indices trigger recursion. - if (assigned[i$2] === undefined) { markChangesRecursively(draft[i$2]); } - } - } -} - -function hasObjectChanges(state) { - var base = state.base; - var draft = state.draft; // Search for added keys and changed keys. Start at the back, because - // non-numeric keys are ordered by time of definition on the object. - - var keys = Object.keys(draft); - - for (var i = keys.length - 1; i >= 0; i--) { - var key = keys[i]; - var baseValue = base[key]; // The `undefined` check is a fast path for pre-existing keys. - - if (baseValue === undefined && !has(base, key)) { - return true; - } // Once a base key is deleted, future changes go undetected, because its - // descriptor is erased. This branch detects any missed changes. - else { - var value = draft[key]; - var state$1 = value && value[DRAFT_STATE]; - - if (state$1 ? state$1.base !== baseValue : !is(value, baseValue)) { - return true; - } - } - } // At this point, no keys were added or changed. - // Compare key count to determine if keys were deleted. - - - return keys.length !== Object.keys(base).length; -} - -function hasArrayChanges(state) { - var draft = state.draft; - if (draft.length !== state.base.length) { return true; } // See #116 - // If we first shorten the length, our array interceptors will be removed. - // If after that new items are added, result in the same original length, - // those last items will have no intercepting property. - // So if there is no own descriptor on the last position, we know that items were removed and added - // N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check - // the last one - - var descriptor = Object.getOwnPropertyDescriptor(draft, draft.length - 1); // descriptor can be null, but only for newly created sparse arrays, eg. new Array(10) - - 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 - - return false; -} - -function createHiddenProperty(target, prop, value) { - Object.defineProperty(target, prop, { - value: value, - enumerable: false, - writable: true - }); -} - -var legacyProxy = /*#__PURE__*/Object.freeze({ - willFinalize: willFinalize, - createProxy: createProxy -}); - -function willFinalize$1() {} -function createProxy$1(base, parent) { - var scope = parent ? parent.scope : ImmerScope.current; - var state = { - // Track which produce call this is associated with. - scope: scope, - // True for both shallow and deep changes. - modified: false, - // Used during finalization. - finalized: false, - // Track which properties have been assigned (true) or deleted (false). - assigned: {}, - // The parent draft state. - parent: parent, - // The base state. - base: base, - // The base proxy. - draft: null, - // Any property proxies. - drafts: {}, - // The base copy with any updated values. - copy: null, - // Called by the `produce` function. - revoke: null - }; - var ref = Array.isArray(base) ? // [state] is used for arrays, to make sure the proxy is array-ish and not violate invariants, - // although state itself is an object - Proxy.revocable([state], arrayTraps) : Proxy.revocable(state, objectTraps); - var revoke = ref.revoke; - var proxy = ref.proxy; - state.draft = proxy; - state.revoke = revoke; - scope.drafts.push(proxy); - return proxy; -} -var objectTraps = { - get: get$1, - - has: function has(target, prop) { - return prop in source$1(target); - }, - - ownKeys: function ownKeys(target) { - return Reflect.ownKeys(source$1(target)); - }, - - set: set$1, - deleteProperty: deleteProperty, - getOwnPropertyDescriptor: getOwnPropertyDescriptor, - - defineProperty: function defineProperty() { - throw new Error("Object.defineProperty() cannot be used on an Immer draft"); // prettier-ignore - }, - - getPrototypeOf: function getPrototypeOf(target) { - return Object.getPrototypeOf(target.base); - }, - - setPrototypeOf: function setPrototypeOf() { - throw new Error("Object.setPrototypeOf() cannot be used on an Immer draft"); // prettier-ignore - } - -}; -var arrayTraps = {}; -each(objectTraps, function (key, fn) { - arrayTraps[key] = function () { - arguments[0] = arguments[0][0]; - return fn.apply(this, arguments); - }; -}); - -arrayTraps.deleteProperty = function (state, prop) { - if (isNaN(parseInt(prop))) { - throw new Error("Immer only supports deleting array indices"); // prettier-ignore - } - - return objectTraps.deleteProperty.call(this, state[0], prop); -}; - -arrayTraps.set = function (state, prop, value) { - if (prop !== "length" && isNaN(parseInt(prop))) { - throw new Error("Immer only supports setting array indices and the 'length' property"); // prettier-ignore - } - - return objectTraps.set.call(this, state[0], prop, value); -}; // returns the object we should be reading the current value from, which is base, until some change has been made - - -function source$1(state) { - return state.copy || state.base; -} // Access a property without creating an Immer draft. - - -function peek$1(draft, prop) { - var state = draft[DRAFT_STATE]; - var desc = Reflect.getOwnPropertyDescriptor(state ? source$1(state) : draft, prop); - return desc && desc.value; -} - -function get$1(state, prop) { - if (prop === DRAFT_STATE) { return state; } - var drafts = state.drafts; // Check for existing draft in unmodified state. - - if (!state.modified && has(drafts, prop)) { - return drafts[prop]; - } - - var value = source$1(state)[prop]; - - if (state.finalized || !isDraftable(value)) { - return value; - } // Check for existing draft in modified state. - - - if (state.modified) { - // Assigned values are never drafted. This catches any drafts we created, too. - if (value !== peek$1(state.base, prop)) { return value; } // Store drafts on the copy (when one exists). - - drafts = state.copy; - } - - return drafts[prop] = createProxy$1(value, state); -} - -function set$1(state, prop, value) { - if (!state.modified) { - var baseValue = peek$1(state.base, prop); // Optimize based on value's truthiness. Truthy values are guaranteed to - // never be undefined, so we can avoid the `in` operator. Lastly, truthy - // values may be drafts, but falsy values are never drafts. - - var isUnchanged = value ? is(baseValue, value) || value === state.drafts[prop] : is(baseValue, value) && prop in state.base; - if (isUnchanged) { return true; } - markChanged$1(state); - } - - state.assigned[prop] = true; - state.copy[prop] = value; - return true; -} - -function deleteProperty(state, prop) { - // The `undefined` check is a fast path for pre-existing keys. - if (peek$1(state.base, prop) !== undefined || prop in state.base) { - state.assigned[prop] = false; - markChanged$1(state); - } - - if (state.copy) { delete state.copy[prop]; } - return true; -} // Note: We never coerce `desc.value` into an Immer draft, because we can't make -// the same guarantee in ES5 mode. - - -function getOwnPropertyDescriptor(state, prop) { - var owner = source$1(state); - var desc = Reflect.getOwnPropertyDescriptor(owner, prop); - - if (desc) { - desc.writable = true; - desc.configurable = !Array.isArray(owner) || prop !== "length"; - } - - return desc; -} - -function markChanged$1(state) { - if (!state.modified) { - state.modified = true; - state.copy = assign(shallowCopy(state.base), state.drafts); - state.drafts = null; - if (state.parent) { markChanged$1(state.parent); } - } -} - -var modernProxy = /*#__PURE__*/Object.freeze({ - willFinalize: willFinalize$1, - createProxy: createProxy$1 -}); - -function generatePatches(state, basePath, patches, inversePatches) { - Array.isArray(state.base) ? generateArrayPatches(state, basePath, patches, inversePatches) : generateObjectPatches(state, basePath, patches, inversePatches); -} - -function generateArrayPatches(state, basePath, patches, inversePatches) { - var assign, assign$1; - - var base = state.base; - var copy = state.copy; - var assigned = state.assigned; // Reduce complexity by ensuring `base` is never longer. - - if (copy.length < base.length) { - (assign = [copy, base], base = assign[0], copy = assign[1]); - (assign$1 = [inversePatches, patches], patches = assign$1[0], inversePatches = assign$1[1]); - } - - var delta = copy.length - base.length; // Find the first replaced index. - - var start = 0; - - while (base[start] === copy[start] && start < base.length) { - ++start; - } // Find the last replaced index. Search from the end to optimize splice patches. - - - var end = base.length; - - while (end > start && base[end - 1] === copy[end + delta - 1]) { - --end; - } // Process replaced indices. - - - for (var i = start; i < end; ++i) { - if (assigned[i] && copy[i] !== base[i]) { - var path = basePath.concat([i]); - patches.push({ - op: "replace", - path: path, - value: copy[i] - }); - inversePatches.push({ - op: "replace", - path: path, - value: base[i] - }); - } - } - - var useRemove = end != base.length; - var replaceCount = patches.length; // Process added indices. - - for (var i$1 = end + delta - 1; i$1 >= end; --i$1) { - var path$1 = basePath.concat([i$1]); - patches[replaceCount + i$1 - end] = { - op: "add", - path: path$1, - value: copy[i$1] - }; - - if (useRemove) { - inversePatches.push({ - op: "remove", - path: path$1 - }); - } - } // One "replace" patch reverses all non-splicing "add" patches. - - - if (!useRemove) { - inversePatches.push({ - op: "replace", - path: basePath.concat(["length"]), - value: base.length - }); - } -} - -function generateObjectPatches(state, basePath, patches, inversePatches) { - var base = state.base; - var copy = state.copy; - each(state.assigned, function (key, assignedValue) { - var origValue = base[key]; - var value = copy[key]; - var op = !assignedValue ? "remove" : key in base ? "replace" : "add"; - if (origValue === value && op === "replace") { return; } - var path = basePath.concat(key); - patches.push(op === "remove" ? { - op: op, - path: path - } : { - op: op, - path: path, - value: value - }); - inversePatches.push(op === "add" ? { - op: "remove", - path: path - } : op === "remove" ? { - op: "add", - path: path, - value: origValue - } : { - op: "replace", - path: path, - value: origValue - }); - }); -} - -function applyPatches(draft, patches) { - for (var i = 0; i < patches.length; i++) { - var patch = patches[i]; - var path = patch.path; - - if (path.length === 0 && patch.op === "replace") { - draft = patch.value; - } else { - var base = draft; - - for (var i$1 = 0; i$1 < path.length - 1; i$1++) { - base = base[path[i$1]]; - if (!base || typeof base !== "object") { throw new Error("Cannot apply patch, path doesn't resolve: " + path.join("/")); } // prettier-ignore - } - - var key = path[path.length - 1]; - - switch (patch.op) { - case "replace": - base[key] = patch.value; - break; - - case "add": - if (Array.isArray(base)) { - // TODO: support "foo/-" paths for appending to an array - base.splice(key, 0, patch.value); - } else { - base[key] = patch.value; - } - - break; - - case "remove": - if (Array.isArray(base)) { - base.splice(key, 1); - } else { - delete base[key]; - } - - break; - - default: - throw new Error("Unsupported patch operation: " + patch.op); - } - } - } - - return draft; -} - -function verifyMinified() {} - -var configDefaults = { - useProxies: typeof Proxy !== "undefined" && typeof Reflect !== "undefined", - autoFreeze: typeof process !== "undefined" ? "development" !== "production" : verifyMinified.name === "verifyMinified", - onAssign: null, - onDelete: null, - onCopy: null -}; -var Immer = function Immer(config) { - assign(this, configDefaults, config); - this.setUseProxies(this.useProxies); - this.produce = this.produce.bind(this); -}; - -Immer.prototype.produce = function produce (base, recipe, patchListener) { - var this$1 = this; - - // curried invocation - if (typeof base === "function" && typeof recipe !== "function") { - var defaultBase = recipe; - recipe = base; - var self = this; - return function curriedProduce(base) { - var this$1 = this; - if ( base === void 0 ) base = defaultBase; - var args = [], len = arguments.length - 1; - while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ]; - - return self.produce(base, function (draft) { return recipe.call.apply(recipe, [ this$1, draft ].concat( args )); }); // prettier-ignore - }; - } // prettier-ignore - - - { - if (typeof recipe !== "function") { - throw new Error("The first or second argument to `produce` must be a function"); - } - - if (patchListener !== undefined && typeof patchListener !== "function") { - throw new Error("The third argument to `produce` must be a function or undefined"); - } - } - var result; // Only plain objects, arrays, and "immerable classes" are drafted. - - if (isDraftable(base)) { - var scope = ImmerScope.enter(); - var proxy = this.createProxy(base); - var hasError = true; - - try { - result = recipe(proxy); - hasError = false; - } finally { - // finally instead of catch + rethrow better preserves original stack - if (hasError) { scope.revoke(); }else { scope.leave(); } - } - - if (result instanceof Promise) { - return result.then(function (result) { - scope.usePatches(patchListener); - return this$1.processResult(result, scope); - }, function (error) { - scope.revoke(); - throw error; - }); - } - - scope.usePatches(patchListener); - return this.processResult(result, scope); - } else { - result = recipe(base); - if (result === undefined) { return base; } - return result !== NOTHING ? result : undefined; - } -}; - -Immer.prototype.createDraft = function createDraft (base) { - if (!isDraftable(base)) { - throw new Error("First argument to `createDraft` must be a plain object, an array, or an immerable object"); // prettier-ignore - } - - var scope = ImmerScope.enter(); - var proxy = this.createProxy(base); - proxy[DRAFT_STATE].isManual = true; - scope.leave(); - return proxy; -}; - -Immer.prototype.finishDraft = function finishDraft (draft, patchListener) { - var state = draft && draft[DRAFT_STATE]; - - if (!state || !state.isManual) { - throw new Error("First argument to `finishDraft` must be a draft returned by `createDraft`"); // prettier-ignore - } - - if (state.finalized) { - throw new Error("The given draft is already finalized"); // prettier-ignore - } - - var scope = state.scope; - scope.usePatches(patchListener); - return this.processResult(undefined, scope); -}; - -Immer.prototype.setAutoFreeze = function setAutoFreeze (value) { - this.autoFreeze = value; -}; - -Immer.prototype.setUseProxies = function setUseProxies (value) { - this.useProxies = value; - assign(this, value ? modernProxy : legacyProxy); -}; - -Immer.prototype.applyPatches = function applyPatches$1 (base, patches) { - // Mutate the base state when a draft is passed. - if (isDraft(base)) { - return applyPatches(base, patches); - } // Otherwise, produce a copy of the base state. - - - return this.produce(base, function (draft) { return applyPatches(draft, patches); }); -}; -/** @internal */ - - -Immer.prototype.processResult = function processResult (result, scope) { - var baseDraft = scope.drafts[0]; - var isReplaced = result !== undefined && result !== baseDraft; - this.willFinalize(scope, result, isReplaced); - - if (isReplaced) { - if (baseDraft[DRAFT_STATE].modified) { - scope.revoke(); - 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 - } - - if (isDraftable(result)) { - // Finalize the result in case it contains (or is) a subset of the draft. - result = this.finalize(result, null, scope); - } - - if (scope.patches) { - scope.patches.push({ - op: "replace", - path: [], - value: result - }); - scope.inversePatches.push({ - op: "replace", - path: [], - value: baseDraft[DRAFT_STATE].base - }); - } - } else { - // Finalize the base draft. - result = this.finalize(baseDraft, [], scope); - } - - scope.revoke(); - - if (scope.patches) { - scope.patchListener(scope.patches, scope.inversePatches); - } - - return result !== NOTHING ? result : undefined; -}; -/** - * @internal - * Finalize a draft, returning either the unmodified base state or a modified - * copy of the base state. - */ - - -Immer.prototype.finalize = function finalize (draft, path, scope) { - var this$1 = this; - - var state = draft[DRAFT_STATE]; - - if (!state) { - if (Object.isFrozen(draft)) { return draft; } - return this.finalizeTree(draft, null, scope); - } // Never finalize drafts owned by another scope. - - - if (state.scope !== scope) { - return draft; - } - - if (!state.modified) { - return state.base; - } - - if (!state.finalized) { - state.finalized = true; - this.finalizeTree(state.draft, path, scope); - - if (this.onDelete) { - // The `assigned` object is unreliable with ES5 drafts. - if (this.useProxies) { - var assigned = state.assigned; - - for (var prop in assigned) { - if (!assigned[prop]) { this.onDelete(state, prop); } - } - } else { - var base = state.base; - var copy = state.copy; - each(base, function (prop) { - if (!has(copy, prop)) { this$1.onDelete(state, prop); } - }); - } - } - - if (this.onCopy) { - this.onCopy(state); - } // At this point, all descendants of `state.copy` have been finalized, - // so we can be sure that `scope.canAutoFreeze` is accurate. - - - if (this.autoFreeze && scope.canAutoFreeze) { - Object.freeze(state.copy); - } - - if (path && scope.patches) { - generatePatches(state, path, scope.patches, scope.inversePatches); - } - } - - return state.copy; -}; -/** - * @internal - * Finalize all drafts in the given state tree. - */ - - -Immer.prototype.finalizeTree = function finalizeTree (root, rootPath, scope) { - var this$1 = this; - - var state = root[DRAFT_STATE]; - - if (state) { - if (!this.useProxies) { - // Create the final copy, with added keys and without deleted keys. - state.copy = shallowCopy(state.draft, true); - } - - root = state.copy; - } - - var needPatches = !!rootPath && !!scope.patches; - - var finalizeProperty = function (prop, value, parent) { - if (value === parent) { - throw Error("Immer forbids circular references"); - } // In the `finalizeTree` method, only the `root` object may be a draft. - - - var isDraftProp = !!state && parent === root; - - if (isDraft(value)) { - var path = isDraftProp && needPatches && !state.assigned[prop] ? rootPath.concat(prop) : null; // Drafts owned by `scope` are finalized here. - - value = this$1.finalize(value, path, scope); // Drafts from another scope must prevent auto-freezing. - - if (isDraft(value)) { - scope.canAutoFreeze = false; - } // Preserve non-enumerable properties. - - - if (Array.isArray(parent) || isEnumerable(parent, prop)) { - parent[prop] = value; - } else { - Object.defineProperty(parent, prop, { - value: value - }); - } // Unchanged drafts are never passed to the `onAssign` hook. - - - if (isDraftProp && value === state.base[prop]) { return; } - } // Unchanged draft properties are ignored. - else if (isDraftProp && is(value, state.base[prop])) { - return; - } // Search new objects for unfinalized drafts. Frozen objects should never contain drafts. - else if (isDraftable(value) && !Object.isFrozen(value)) { - each(value, finalizeProperty); - } - - if (isDraftProp && this$1.onAssign) { - this$1.onAssign(state, prop, value); - } - }; - - each(root, finalizeProperty); - return root; -}; - -var immer = new Immer(); -/** - * Pass true to automatically freeze all copies created by Immer. - * - * By default, auto-freezing is disabled in production. - */ - -var setAutoFreeze = immer.setAutoFreeze.bind(immer); -/** - * Pass true to use the ES2015 `Proxy` class when creating drafts, which is - * always faster than using ES5 proxies. - * - * By default, feature detection is used, so calling this is rarely necessary. - */ - -var setUseProxies = immer.setUseProxies.bind(immer); -/** - * Apply an array of Immer patches to the first argument. - * - * This function is a producer, which means copy-on-write is in effect. - */ - -var applyPatches$1 = immer.applyPatches.bind(immer); -/** - * Create an Immer draft from the given base state, which may be a draft itself. - * The draft can be modified until you finalize it with the `finishDraft` function. - */ - -var createDraft = immer.createDraft.bind(immer); -/** - * Finalize an Immer draft from a `createDraft` call, returning the base state - * (if no changes were made) or a modified copy. The draft must *not* be - * mutated afterwards. - * - * Pass a function as the 2nd argument to generate Immer patches based on the - * changes that were made. - */ - -var finishDraft = immer.finishDraft.bind(immer); - -function symbolObservablePonyfill(root) { - var result; - var Symbol = root.Symbol; - - if (typeof Symbol === 'function') { - if (Symbol.observable) { - result = Symbol.observable; - } else { - result = Symbol('observable'); - Symbol.observable = result; - } - } else { - result = '@@observable'; - } - - return result; -} - -/* global window */ - -var root; - -if (typeof self !== 'undefined') { - root = self; -} else if (typeof window !== 'undefined') { - root = window; -} else if (typeof global !== 'undefined') { - root = global; -} else if (typeof module !== 'undefined') { - root = module; -} else { - root = Function('return this')(); -} - -var result = symbolObservablePonyfill(root); - -/** - * These are private action types reserved by Redux. - * For any unknown actions, you must return the current state. - * If the current state is undefined, you must return the initial state. - * Do not reference these action types directly in your code. - */ -var randomString = function randomString() { - return Math.random().toString(36).substring(7).split('').join('.'); -}; - -var ActionTypes = { - INIT: "@@redux/INIT" + randomString(), - REPLACE: "@@redux/REPLACE" + randomString(), - PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() { - return "@@redux/PROBE_UNKNOWN_ACTION" + randomString(); - } -}; - -/** - * @param {any} obj The object to inspect. - * @returns {boolean} True if the argument appears to be a plain object. - */ -function isPlainObject(obj) { - if (typeof obj !== 'object' || obj === null) return false; - var proto = obj; - - while (Object.getPrototypeOf(proto) !== null) { - proto = Object.getPrototypeOf(proto); - } - - return Object.getPrototypeOf(obj) === proto; -} - -/** - * Creates a Redux store that holds the state tree. - * The only way to change the data in the store is to call `dispatch()` on it. - * - * There should only be a single store in your app. To specify how different - * parts of the state tree respond to actions, you may combine several reducers - * into a single reducer function by using `combineReducers`. - * - * @param {Function} reducer A function that returns the next state tree, given - * the current state tree and the action to handle. - * - * @param {any} [preloadedState] The initial state. You may optionally specify it - * to hydrate the state from the server in universal apps, or to restore a - * previously serialized user session. - * If you use `combineReducers` to produce the root reducer function, this must be - * an object with the same shape as `combineReducers` keys. - * - * @param {Function} [enhancer] The store enhancer. You may optionally specify it - * to enhance the store with third-party capabilities such as middleware, - * time travel, persistence, etc. The only store enhancer that ships with Redux - * is `applyMiddleware()`. - * - * @returns {Store} A Redux store that lets you read the state, dispatch actions - * and subscribe to changes. - */ - -function createStore(reducer, preloadedState, enhancer) { - var _ref2; - - if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') { - 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 (typeof preloadedState === 'function' && typeof enhancer === 'undefined') { - enhancer = preloadedState; - preloadedState = undefined; - } - - if (typeof enhancer !== 'undefined') { - if (typeof enhancer !== 'function') { - throw new Error('Expected the enhancer to be a function.'); - } - - return enhancer(createStore)(reducer, preloadedState); - } - - if (typeof reducer !== 'function') { - throw new Error('Expected the reducer to be a function.'); - } - - var currentReducer = reducer; - var currentState = preloadedState; - var currentListeners = []; - var nextListeners = currentListeners; - var isDispatching = false; - /** - * This makes a shallow copy of currentListeners so we can use - * nextListeners as a temporary list while dispatching. - * - * This prevents any bugs around consumers calling - * subscribe/unsubscribe in the middle of a dispatch. - */ - - function ensureCanMutateNextListeners() { - if (nextListeners === currentListeners) { - nextListeners = currentListeners.slice(); - } - } - /** - * Reads the state tree managed by the store. - * - * @returns {any} The current state tree of your application. - */ - - - function getState() { - if (isDispatching) { - 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 currentState; - } - /** - * Adds a change listener. It will be called any time an action is dispatched, - * and some part of the state tree may potentially have changed. You may then - * call `getState()` to read the current state tree inside the callback. - * - * You may call `dispatch()` from a change listener, with the following - * caveats: - * - * 1. The subscriptions are snapshotted just before every `dispatch()` call. - * If you subscribe or unsubscribe while the listeners are being invoked, this - * will not have any effect on the `dispatch()` that is currently in progress. - * However, the next `dispatch()` call, whether nested or not, will use a more - * recent snapshot of the subscription list. - * - * 2. The listener should not expect to see all state changes, as the state - * might have been updated multiple times during a nested `dispatch()` before - * the listener is called. It is, however, guaranteed that all subscribers - * registered before the `dispatch()` started will be called with the latest - * state by the time it exits. - * - * @param {Function} listener A callback to be invoked on every dispatch. - * @returns {Function} A function to remove this change listener. - */ - - - function subscribe(listener) { - if (typeof listener !== 'function') { - throw new Error('Expected the listener to be a function.'); - } - - if (isDispatching) { - 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#subscribelistener for more details.'); - } - - var isSubscribed = true; - ensureCanMutateNextListeners(); - nextListeners.push(listener); - return function unsubscribe() { - if (!isSubscribed) { - return; - } - - if (isDispatching) { - throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.'); - } - - isSubscribed = false; - ensureCanMutateNextListeners(); - var index = nextListeners.indexOf(listener); - nextListeners.splice(index, 1); - currentListeners = null; - }; - } - /** - * Dispatches an action. It is the only way to trigger a state change. - * - * The `reducer` function, used to create the store, will be called with the - * current state tree and the given `action`. Its return value will - * be considered the **next** state of the tree, and the change listeners - * will be notified. - * - * The base implementation only supports plain object actions. If you want to - * dispatch a Promise, an Observable, a thunk, or something else, you need to - * wrap your store creating function into the corresponding middleware. For - * example, see the documentation for the `redux-thunk` package. Even the - * middleware will eventually dispatch plain object actions using this method. - * - * @param {Object} action A plain object representing “what changed”. It is - * a good idea to keep actions serializable so you can record and replay user - * sessions, or use the time travelling `redux-devtools`. An action must have - * a `type` property which may not be `undefined`. It is a good idea to use - * string constants for action types. - * - * @returns {Object} For convenience, the same action object you dispatched. - * - * Note that, if you use a custom middleware, it may wrap `dispatch()` to - * return something else (for example, a Promise you can await). - */ - - - function dispatch(action) { - if (!isPlainObject(action)) { - throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.'); - } - - if (typeof action.type === 'undefined') { - throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?'); - } - - if (isDispatching) { - throw new Error('Reducers may not dispatch actions.'); - } - - try { - isDispatching = true; - currentState = currentReducer(currentState, action); - } finally { - isDispatching = false; - } - - var listeners = currentListeners = nextListeners; - - for (var i = 0; i < listeners.length; i++) { - var listener = listeners[i]; - listener(); - } - - return action; - } - /** - * Replaces the reducer currently used by the store to calculate the state. - * - * You might need this if your app implements code splitting and you want to - * load some of the reducers dynamically. You might also need this if you - * implement a hot reloading mechanism for Redux. - * - * @param {Function} nextReducer The reducer for the store to use instead. - * @returns {void} - */ - - - function replaceReducer(nextReducer) { - if (typeof nextReducer !== 'function') { - throw new Error('Expected the nextReducer to be a function.'); - } - - currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT. - // Any reducers that existed in both the new and old rootReducer - // will receive the previous state. This effectively populates - // the new state tree with any relevant data from the old one. - - dispatch({ - type: ActionTypes.REPLACE - }); - } - /** - * Interoperability point for observable/reactive libraries. - * @returns {observable} A minimal observable of state changes. - * For more information, see the observable proposal: - * https://github.com/tc39/proposal-observable - */ - - - function observable() { - var _ref; - - var outerSubscribe = subscribe; - return _ref = { - /** - * The minimal observable subscription method. - * @param {Object} observer Any object that can be used as an observer. - * The observer object should have a `next` method. - * @returns {subscription} An object with an `unsubscribe` method that can - * be used to unsubscribe the observable from the store, and prevent further - * emission of values from the observable. - */ - subscribe: function subscribe(observer) { - if (typeof observer !== 'object' || observer === null) { - throw new TypeError('Expected the observer to be an object.'); - } - - function observeState() { - if (observer.next) { - observer.next(getState()); - } - } - - observeState(); - var unsubscribe = outerSubscribe(observeState); - return { - unsubscribe: unsubscribe - }; - } - }, _ref[result] = function () { - return this; - }, _ref; - } // When a store is created, an "INIT" action is dispatched so that every - // reducer returns their initial state. This effectively populates - // the initial state tree. - - - dispatch({ - type: ActionTypes.INIT - }); - return _ref2 = { - dispatch: dispatch, - subscribe: subscribe, - getState: getState, - replaceReducer: replaceReducer - }, _ref2[result] = observable, _ref2; -} - -/** - * Prints a warning in the console if it exists. - * - * @param {String} message The warning message. - * @returns {void} - */ -function warning(message) { - /* eslint-disable no-console */ - if (typeof console !== 'undefined' && typeof console.error === 'function') { - console.error(message); - } - /* eslint-enable no-console */ - - - try { - // This error was thrown as a convenience so that if you enable - // "break on all exceptions" in your console, - // it would pause the execution at this line. - throw new Error(message); - } catch (e) {} // eslint-disable-line no-empty - -} - -function _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; -} - -function ownKeys$1(object, enumerableOnly) { - var keys = Object.keys(object); - - if (Object.getOwnPropertySymbols) { - keys.push.apply(keys, Object.getOwnPropertySymbols(object)); - } - - if (enumerableOnly) keys = keys.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - return keys; -} - -function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - - if (i % 2) { - ownKeys$1(source, true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys$1(source).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - - return target; -} - -/** - * Composes single-argument functions from right to left. The rightmost - * function can take multiple arguments as it provides the signature for - * the resulting composite function. - * - * @param {...Function} funcs The functions to compose. - * @returns {Function} A function obtained by composing the argument functions - * from right to left. For example, compose(f, g, h) is identical to doing - * (...args) => f(g(h(...args))). - */ -function compose() { - for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) { - funcs[_key] = arguments[_key]; - } - - if (funcs.length === 0) { - return function (arg) { - return arg; - }; - } - - if (funcs.length === 1) { - return funcs[0]; - } - - return funcs.reduce(function (a, b) { - return function () { - return a(b.apply(void 0, arguments)); - }; - }); -} - -/** - * Creates a store enhancer that applies middleware to the dispatch method - * of the Redux store. This is handy for a variety of tasks, such as expressing - * asynchronous actions in a concise manner, or logging every action payload. - * - * See `redux-thunk` package as an example of the Redux middleware. - * - * Because middleware is potentially asynchronous, this should be the first - * store enhancer in the composition chain. - * - * Note that each middleware will be given the `dispatch` and `getState` functions - * as named arguments. - * - * @param {...Function} middlewares The middleware chain to be applied. - * @returns {Function} A store enhancer applying the middleware. - */ - -function applyMiddleware() { - for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) { - middlewares[_key] = arguments[_key]; - } - - return function (createStore) { - return function () { - var store = createStore.apply(void 0, arguments); - - var _dispatch = function dispatch() { - throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.'); - }; - - var middlewareAPI = { - getState: store.getState, - dispatch: function dispatch() { - return _dispatch.apply(void 0, arguments); - } - }; - var chain = middlewares.map(function (middleware) { - return middleware(middlewareAPI); - }); - _dispatch = compose.apply(void 0, chain)(store.dispatch); - return _objectSpread2({}, store, { - dispatch: _dispatch - }); - }; - }; -} - -/* - * This is a dummy function to check if the function name has been altered by minification. - * If the function has been minified and NODE_ENV !== 'production', warn the user. - */ - -function isCrushed() {} - -if ( typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') { - 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.'); -} - -function createThunkMiddleware(extraArgument) { - return function (_ref) { - var dispatch = _ref.dispatch, - getState = _ref.getState; - return function (next) { - return function (action) { - if (typeof action === 'function') { - return action(dispatch, getState, extraArgument); - } - - return next(action); - }; - }; - }; -} - -var thunk = createThunkMiddleware(); -thunk.withExtraArgument = createThunkMiddleware; - -function Similar() { - this.list = []; - this.lastItem = undefined; - this.size = 0; - - return this; -} - -Similar.prototype.get = function(key) { - var index; - - if (this.lastItem && this.isEqual(this.lastItem.key, key)) { - return this.lastItem.val; - } - - index = this.indexOf(key); - if (index >= 0) { - this.lastItem = this.list[index]; - return this.list[index].val; - } - - return undefined; -}; - -Similar.prototype.set = function(key, val) { - var index; - - if (this.lastItem && this.isEqual(this.lastItem.key, key)) { - this.lastItem.val = val; - return this; - } - - index = this.indexOf(key); - if (index >= 0) { - this.lastItem = this.list[index]; - this.list[index].val = val; - return this; - } - - this.lastItem = { key: key, val: val }; - this.list.push(this.lastItem); - this.size++; - - return this; -}; - -Similar.prototype.delete = function(key) { - var index; - - if (this.lastItem && this.isEqual(this.lastItem.key, key)) { - this.lastItem = undefined; - } - - index = this.indexOf(key); - if (index >= 0) { - this.size--; - return this.list.splice(index, 1)[0]; - } - - return undefined; -}; - - -// important that has() doesn't use get() in case an existing key has a falsy value, in which case has() would return false -Similar.prototype.has = function(key) { - var index; - - if (this.lastItem && this.isEqual(this.lastItem.key, key)) { - return true; - } - - index = this.indexOf(key); - if (index >= 0) { - this.lastItem = this.list[index]; - return true; - } - - return false; -}; - -Similar.prototype.forEach = function(callback, thisArg) { - var i; - for (i = 0; i < this.size; i++) { - callback.call(thisArg || this, this.list[i].val, this.list[i].key, this); - } -}; - -Similar.prototype.indexOf = function(key) { - var i; - for (i = 0; i < this.size; i++) { - if (this.isEqual(this.list[i].key, key)) { - return i; - } - } - return -1; -}; - -// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers) -Similar.prototype.isEqual = function(val1, val2) { - return val1 === val2 || (val1 !== val1 && val2 !== val2); -}; - -var similar = Similar; - -var mapOrSimilar = function(forceSimilar) { - if (typeof Map !== 'function' || forceSimilar) { - var Similar = similar; - return new Similar(); - } - else { - return new Map(); - } -}; - -var memoizerific = function (limit) { - var cache = new mapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true'), - lru = []; - - return function (fn) { - var memoizerific = function () { - var currentCache = cache, - newMap, - fnResult, - argsLengthMinusOne = arguments.length - 1, - lruPath = Array(argsLengthMinusOne + 1), - isMemoized = true, - i; - - if ((memoizerific.numArgs || memoizerific.numArgs === 0) && memoizerific.numArgs !== argsLengthMinusOne + 1) { - throw new Error('Memoizerific functions should always be called with the same number of arguments'); - } - - // loop through each argument to traverse the map tree - for (i = 0; i < argsLengthMinusOne; i++) { - lruPath[i] = { - cacheItem: currentCache, - arg: arguments[i] - }; - - // climb through the hierarchical map tree until the second-last argument has been found, or an argument is missing. - // if all arguments up to the second-last have been found, this will potentially be a cache hit (determined later) - if (currentCache.has(arguments[i])) { - currentCache = currentCache.get(arguments[i]); - continue; - } - - isMemoized = false; - - // make maps until last value - newMap = new mapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true'); - currentCache.set(arguments[i], newMap); - currentCache = newMap; - } - - // we are at the last arg, check if it is really memoized - if (isMemoized) { - if (currentCache.has(arguments[argsLengthMinusOne])) { - fnResult = currentCache.get(arguments[argsLengthMinusOne]); - } - else { - isMemoized = false; - } - } - - // if the result wasn't memoized, compute it and cache it - if (!isMemoized) { - fnResult = fn.apply(null, arguments); - currentCache.set(arguments[argsLengthMinusOne], fnResult); - } - - // if there is a cache limit, purge any extra results - if (limit > 0) { - lruPath[argsLengthMinusOne] = { - cacheItem: currentCache, - arg: arguments[argsLengthMinusOne] - }; - - if (isMemoized) { - moveToMostRecentLru(lru, lruPath); - } - else { - lru.push(lruPath); - } - - if (lru.length > limit) { - removeCachedResult(lru.shift()); - } - } - - memoizerific.wasMemoized = isMemoized; - memoizerific.numArgs = argsLengthMinusOne + 1; - - return fnResult; - }; - - memoizerific.limit = limit; - memoizerific.wasMemoized = false; - memoizerific.cache = cache; - memoizerific.lru = lru; - - return memoizerific; - }; -}; - -// move current args to most recent position -function moveToMostRecentLru(lru, lruPath) { - var lruLen = lru.length, - lruPathLen = lruPath.length, - isMatch, - i, ii; - - for (i = 0; i < lruLen; i++) { - isMatch = true; - for (ii = 0; ii < lruPathLen; ii++) { - if (!isEqual(lru[i][ii].arg, lruPath[ii].arg)) { - isMatch = false; - break; - } - } - if (isMatch) { - break; - } - } - - lru.push(lru.splice(i, 1)[0]); -} - -// remove least recently used cache item and all dead branches -function removeCachedResult(removedLru) { - var removedLruLen = removedLru.length, - currentLru = removedLru[removedLruLen - 1], - tmp, - i; - - currentLru.cacheItem.delete(currentLru.arg); - - // walk down the tree removing dead branches (size 0) along the way - for (i = removedLruLen - 2; i >= 0; i--) { - currentLru = removedLru[i]; - tmp = currentLru.cacheItem.get(currentLru.arg); - - if (!tmp || !tmp.size) { - currentLru.cacheItem.delete(currentLru.arg); - } else { - break; - } - } -} - -// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers) -function isEqual(val1, val2) { - return val1 === val2 || (val1 !== val1 && val2 !== val2); -} - -/*! - * isobject - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -function isObject(val) { - return val != null && typeof val === 'object' && Array.isArray(val) === false; -} - -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -function isObjectObject(o) { - return isObject(o) === true - && Object.prototype.toString.call(o) === '[object Object]'; -} - -function isPlainObject$1(o) { - var ctor,prot; - - if (isObjectObject(o) === false) return false; - - // If has modified constructor - ctor = o.constructor; - if (typeof ctor !== 'function') return false; - - // If has modified prototype - prot = ctor.prototype; - if (isObjectObject(prot) === false) return false; - - // If constructor does not have an Object-specific method - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; - } - - // Most likely a plain Object - return true; -} - -/** - * Returns a function, that, as long as it continues to be invoked, will not - * be triggered. The function will be called after it stops being called for - * N milliseconds. If `immediate` is passed, trigger the function on the - * leading edge, instead of the trailing. The function also has a property 'clear' - * that is a function which will clear the timer to prevent previously scheduled executions. - * - * @source underscore.js - * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/ - * @param {Function} function to wrap - * @param {Number} timeout in ms (`100`) - * @param {Boolean} whether to execute at the beginning (`false`) - * @api public - */ -function debounce(func, wait, immediate){ - var timeout, args, context, timestamp, result; - if (null == wait) wait = 100; - - function later() { - var last = Date.now() - timestamp; - - if (last < wait && last >= 0) { - timeout = setTimeout(later, wait - last); - } else { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - context = args = null; - } - } - } - var debounced = function(){ - context = this; - args = arguments; - timestamp = Date.now(); - var callNow = immediate && !timeout; - if (!timeout) timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - context = args = null; - } - - return result; - }; - - debounced.clear = function() { - if (timeout) { - clearTimeout(timeout); - timeout = null; - } - }; - - debounced.flush = function() { - if (timeout) { - result = func.apply(context, args); - context = args = null; - - clearTimeout(timeout); - timeout = null; - } - }; - - return debounced; -} -// Adds compatibility for ES modules -debounce.debounce = debounce; - -var debounce_1 = debounce; - -var StoreContext = React.createContext(); - -// To get around it, we can conditionally useEffect on the server (no-op) and -// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store -// subscription callback always has the selector from the latest render commit -// available, otherwise a store update may happen between render and the effect, -// which may cause missed updates; we also must ensure the store subscription -// is created synchronously, otherwise a store update may occur before the -// subscription is created and an inconsistent state may be observed - -var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect; -function createStoreStateHook(Context) { - return function useStoreState(mapState, equalityFn) { - var store = React.useContext(Context); - var mapStateRef = React.useRef(mapState); - var stateRef = React.useRef(); - var mountedRef = React.useRef(true); - var subscriptionMapStateError = React.useRef(); - - var _useReducer = React.useReducer(function (s) { - return s + 1; - }, 0), - forceRender = _useReducer[1]; - - if (subscriptionMapStateError.current || mapStateRef.current !== mapState || stateRef.current === undefined) { - try { - stateRef.current = mapState(store.getState()); - } catch (err) { - { - var errorMessage = "An error occurred trying to map state in a useStoreState hook: " + err.message + "."; - - if (subscriptionMapStateError.current) { - errorMessage += "\nThis error may be related to the following error:\n" + subscriptionMapStateError.current.stack + "\n\nOriginal stack trace:"; - } - - throw new Error(errorMessage); - } - } - } - - useIsomorphicLayoutEffect(function () { - mapStateRef.current = mapState; - subscriptionMapStateError.current = undefined; - }); - useIsomorphicLayoutEffect(function () { - var checkMapState = function checkMapState() { - try { - var newState = mapStateRef.current(store.getState()); - var isStateEqual = typeof equalityFn === 'function' ? equalityFn(stateRef.current, newState) : stateRef.current === newState; - - if (isStateEqual) { - return; - } - - stateRef.current = newState; - } catch (err) { - // see https://github.com/reduxjs/react-redux/issues/1179 - // There is a possibility mapState will fail due to stale state or - // props, therefore we will just track the error and force our - // component to update. It should then receive the updated state - subscriptionMapStateError.current = err; - } - - if (mountedRef.current) { - forceRender({}); - } - }; - - var unsubscribe = store.subscribe(checkMapState); - checkMapState(); - return function () { - mountedRef.current = false; - unsubscribe(); - }; - }, []); - return stateRef.current; - }; -} -var useStoreState = createStoreStateHook(StoreContext); -function createStoreActionsHook(Context) { - return function useStoreActions(mapActions) { - var store = React.useContext(Context); - return mapActions(store.getActions()); - }; -} -var useStoreActions = createStoreActionsHook(StoreContext); -function createStoreDispatchHook(Context) { - return function useStoreDispatch() { - var store = React.useContext(Context); - return store.dispatch; - }; -} -var useStoreDispatch = createStoreDispatchHook(StoreContext); -function useStore() { - return React.useContext(StoreContext); -} -function createStoreRehydratedHook(Context) { - return function useStoreRehydrated() { - var store = React.useContext(Context); - - var _useState = React.useState(false), - rehydrated = _useState[0], - setRehydrated = _useState[1]; - - React.useEffect(function () { - store.persist.resolveRehydration().then(function () { - return setRehydrated(true); - }); - }, []); - return rehydrated; - }; -} -var useStoreRehydrated = createStoreRehydratedHook(StoreContext); -function createTypedHooks() { - return { - useStoreActions: useStoreActions, - useStoreDispatch: useStoreDispatch, - useStoreState: useStoreState, - useStoreRehydrated: useStoreRehydrated, - useStore: useStore - }; -} - -function _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); -} - -var actionSymbol = 'a'; -var actionOnSymbol = 'aO'; -var computedSymbol = 'c'; -var persistSymbol = 'p'; -var reducerSymbol = 'r'; -var thunkOnSymbol = 'tO'; -var thunkSymbol = 't'; -var action = function action(fn) { - fn[actionSymbol] = {}; - return fn; -}; - -var deepCloneStateWithoutComputed = function deepCloneStateWithoutComputed(source) { - var recursiveClone = function recursiveClone(current) { - var next = Object.keys(current).reduce(function (acc, key) { - if (Object.getOwnPropertyDescriptor(current, key).get == null) { - acc[key] = current[key]; - } - - return acc; - }, {}); - Object.keys(next).forEach(function (key) { - if (isPlainObject$1(next[key])) { - next[key] = recursiveClone(next[key]); - } - }); - return next; - }; - - return recursiveClone(source); -}; -var isPromise = function isPromise(x) { - return x != null && typeof x === 'object' && typeof x.then === 'function'; -}; -function get$2(path, target) { - return path.reduce(function (acc, cur) { - return isPlainObject$1(acc) ? acc[cur] : undefined; - }, target); -} -function newify(currentPath, currentState, finalValue) { - if (currentPath.length === 0) { - return finalValue; - } - - var newState = _extends({}, currentState); - - var key = currentPath[0]; - - if (currentPath.length === 1) { - newState[key] = finalValue; - } else { - newState[key] = newify(currentPath.slice(1), newState[key], finalValue); - } - - return newState; -} -var set$2 = function set(path, target, value) { - if (path.length === 0) { - if (typeof value === 'object') { - Object.keys(target).forEach(function (key) { - delete target[key]; - }); - Object.keys(value).forEach(function (key) { - target[key] = value[key]; - }); - } - - return; - } - - path.reduce(function (acc, cur, idx) { - if (idx + 1 === path.length) { - acc[cur] = value; - } else { - acc[cur] = acc[cur] || {}; - } - - return acc[cur]; - }, target); -}; -function createSimpleProduce(disableImmer) { - if (disableImmer === void 0) { - disableImmer = false; - } - - return function simpleProduce(path, state, fn) { - if (disableImmer) { - var _current = get$2(path, state); - - var next = fn(_current); - - if (_current !== next) { - return newify(path, state, next); - } - - return state; - } - - if (path.length === 0) { - var _draft = createDraft(state); - - var _result = fn(_draft); - - if (_result) { - return isDraft(_result) ? finishDraft(_result) : _result; - } - - return finishDraft(_draft); - } - - var parentPath = path.slice(0, path.length - 1); - var draft = createDraft(state); - var parent = get$2(parentPath, state); - var current = get$2(path, draft); - var result = fn(current); - - if (result) { - parent[path[path.length - 1]] = result; - } - - return finishDraft(draft); - }; -} - -function createReducer(disableImmer, actionReducersDict, customReducers, computedProperties) { - var simpleProduce = createSimpleProduce(disableImmer); - - var runActionReducerAtPath = function runActionReducerAtPath(state, action, actionReducer, path) { - return simpleProduce(path, state, function (draft) { - return actionReducer(draft, action.payload); - }); - }; - - var reducerForActions = function reducerForActions(state, action) { - var actionReducer = actionReducersDict[action.type]; - - if (actionReducer) { - var actionMeta = actionReducer[actionSymbol] || actionReducer[actionOnSymbol]; - return runActionReducerAtPath(state, action, actionReducer, actionMeta.parent); - } - - return state; - }; - - var reducerForCustomReducers = function reducerForCustomReducers(state, action) { - return customReducers.reduce(function (acc, _ref) { - var parentPath = _ref.parentPath, - key = _ref.key, - red = _ref.reducer; - return simpleProduce(parentPath, acc, function (draft) { - draft[key] = red(draft[key], action); - return draft; - }); - }, state); - }; - - var rootReducer = function rootReducer(state, action) { - var stateAfterActions = reducerForActions(state, action); - var next = customReducers.length > 0 ? reducerForCustomReducers(stateAfterActions, action) : stateAfterActions; - - if (state !== next) { - computedProperties.forEach(function (_ref2) { - var parentPath = _ref2.parentPath, - bindComputedProperty = _ref2.bindComputedProperty; - bindComputedProperty(get$2(parentPath, next)); - }); - } - - return next; - }; - - return rootReducer; -} - -var noopStorage = { - getItem: function getItem() { - return undefined; - }, - setItem: function setItem() { - return undefined; - }, - removeItem: function removeItem() { - return undefined; - } -}; -var localStorage = typeof window !== 'undefined' && typeof window.localStorage !== 'undefined' ? window.localStorage : noopStorage; -var sessionStorage = typeof window !== 'undefined' && typeof window.sessionStorage !== 'undefined' ? window.sessionStorage : noopStorage; - -function createStorageWrapper(storage, transformers) { - if (storage === void 0) { - storage = sessionStorage; - } - - if (transformers === void 0) { - transformers = []; - } - - if (typeof storage === 'string') { - if (storage === 'localStorage') { - storage = localStorage; - } else if (storage === 'sessionStorage') { - storage = sessionStorage; - } else { - { - console.warn("Invalid storage provider specified for Easy Peasy persist: " + storage + "\nValid values include \"localStorage\", \"sessionStorage\" or a custom storage engine."); - } - - storage = noopStorage; - } - } - - var outTransformers = transformers.reverse(); - - var serialize = function serialize(data, key) { - var simpleKey = key.substr(key.indexOf('@') + 1); - var transformed = transformers.reduce(function (acc, cur) { - return cur.in(acc, simpleKey); - }, data); - return storage === localStorage || storage === sessionStorage ? JSON.stringify({ - data: transformed - }) : transformed; - }; - - var deserialize = function deserialize(data, key) { - var simpleKey = key.substr(key.indexOf('@') + 1); - var result = storage === localStorage || storage === sessionStorage ? JSON.parse(data).data : data; - return outTransformers.reduce(function (acc, cur) { - return cur.out(acc, simpleKey); - }, result); - }; - - var isAsync = isPromise(storage.getItem('_')); - return { - isAsync: isAsync, - getItem: function getItem(key) { - if (isAsync) { - return storage.getItem(key).then(function (wrapped) { - return wrapped != null ? deserialize(wrapped, key) : undefined; - }); - } - - var wrapped = storage.getItem(key); - return wrapped != null ? deserialize(wrapped, key) : undefined; - }, - setItem: function setItem(key, data) { - return storage.setItem(key, serialize(data, key)); - }, - removeItem: function removeItem(key) { - return storage.removeItem(key); - } - }; -} - -function extractPersistConfig(path, persistDefinition) { - if (persistDefinition === void 0) { - persistDefinition = {}; - } - - return { - path: path, - config: { - blacklist: persistDefinition.blacklist || [], - mergeStrategy: persistDefinition.mergeStrategy || 'merge', - storage: createStorageWrapper(persistDefinition.storage, persistDefinition.transformers), - whitelist: persistDefinition.whitelist || [] - } - }; -} - -function resolvePersistTargets(target, whitelist, blacklist) { - var targets = Object.keys(target); - - if (whitelist.length > 0) { - targets = targets.reduce(function (acc, cur) { - if (whitelist.findIndex(function (x) { - return x === cur; - }) !== -1) { - return [].concat(acc, [cur]); - } - - return acc; - }, []); - } - - if (blacklist.length > 0) { - targets = targets.reduce(function (acc, cur) { - if (blacklist.findIndex(function (x) { - return x === cur; - }) !== -1) { - return acc; - } - - return [].concat(acc, [cur]); - }, []); - } - - return targets; -} - -function createPersistor(persistKey, references) { - return debounce_1(function () { - references.internals.persistenceConfig.forEach(function (_ref) { - var path = _ref.path, - config = _ref.config; - var storage = config.storage, - whitelist = config.whitelist, - blacklist = config.blacklist; - var state = references.getState(); - var persistRoot = deepCloneStateWithoutComputed(get$2(path, state)); - var targets = resolvePersistTargets(persistRoot, whitelist, blacklist); - targets.forEach(function (key) { - var targetPath = [].concat(path, [key]); - storage.setItem(persistKey(targetPath), get$2(targetPath, state)); - }); - }); - }, 1000); -} -function createPersistMiddleware(persistor, references) { - return function () { - return function (next) { - return function (action) { - var state = next(action); - - if (action && action.type !== '@action.ePRS' && references.internals.persistenceConfig.length > 0) { - persistor(state); - } - - return state; - }; - }; - }; -} -function createPersistenceClearer(persistKey, references) { - return function () { - return new Promise(function (resolve, reject) { - references.internals.persistenceConfig.forEach(function (_ref2) { - var path = _ref2.path, - config = _ref2.config; - var storage = config.storage, - whitelist = config.whitelist, - blacklist = config.blacklist; - var persistRoot = get$2(path, references.getState()); - var targets = resolvePersistTargets(persistRoot, whitelist, blacklist); - - if (targets.length > 0) { - Promise.all(targets.map(function (key) { - var targetPath = [].concat(path, [key]); - return storage.removeItem(persistKey(targetPath)); - })).then(function () { - return resolve(); - }, reject); - } else { - resolve(); - } - }); - }); - }; -} -function rehydrateStateFromPersistIfNeeded(persistKey, replaceState, references) { - // If we have any persist configs we will attemp to perform a state rehydration - var resolveRehydration = Promise.resolve(); - - if (references.internals.persistenceConfig.length > 0) { - references.internals.persistenceConfig.forEach(function (persistInstance) { - var path = persistInstance.path, - config = persistInstance.config; - var blacklist = config.blacklist, - mergeStrategy = config.mergeStrategy, - storage = config.storage, - whitelist = config.whitelist; - var state = references.internals.defaultState; - var persistRoot = deepCloneStateWithoutComputed(get$2(path, state)); - var targets = resolvePersistTargets(persistRoot, whitelist, blacklist); - - var applyRehydrationStrategy = function applyRehydrationStrategy(originalState, rehydratedState) { - if (mergeStrategy === 'overwrite') { - set$2(path, originalState, rehydratedState); - } else if (mergeStrategy === 'merge') { - var target = get$2(path, originalState); - Object.keys(rehydratedState).forEach(function (key) { - target[key] = rehydratedState[key]; - }); - } else if (mergeStrategy === 'mergeDeep') { - var _target = get$2(path, originalState); - - var setAt = function setAt(currentTarget, currentNext) { - Object.keys(currentNext).forEach(function (key) { - var data = currentNext[key]; - - if (isPlainObject$1(data)) { - if (!isPlainObject$1(currentTarget[key])) { - currentTarget[key] = {}; - } - - setAt(currentTarget[key], data); - } else { - currentTarget[key] = data; - } - }); - }; - - setAt(_target, rehydratedState); - } - }; - - if (storage.isAsync) { - var asyncStateResolvers = targets.reduce(function (acc, key) { - var targetPath = [].concat(path, [key]); - var dataPromise = storage.getItem(persistKey(targetPath)); - - if (isPromise(dataPromise)) { - acc.push({ - key: key, - dataPromise: dataPromise - }); - } - - return acc; - }, []); - - if (asyncStateResolvers.length > 0) { - resolveRehydration = Promise.all(asyncStateResolvers.map(function (x) { - return x.dataPromise; - })).then(function (resolvedData) { - var next = resolvedData.reduce(function (acc, cur, idx) { - var key = asyncStateResolvers[idx].key; - - if (cur !== undefined) { - acc[key] = cur; - } - - return acc; - }, {}); - - if (Object.keys(next).length === 0) { - return; - } - - applyRehydrationStrategy(state, next); - replaceState(state); - }); - } - } else { - var next = targets.reduce(function (acc, key) { - var targetPath = [].concat(path, [key]); - var data = storage.getItem(persistKey(targetPath)); - - if (data !== undefined) { - acc[key] = data; - } - - return acc; - }, {}); - applyRehydrationStrategy(state, next); - replaceState(state); - } - }); - } - - return resolveRehydration; -} - -function createActionCreator(actionDefinition, meta, references) { - var prefix = actionDefinition[actionSymbol] ? '@action' : '@actionOn'; - var type = prefix + "." + meta.path.join('.'); - var actionMeta = actionDefinition[actionSymbol] || actionDefinition[actionOnSymbol]; - actionMeta.actionName = meta.key; - actionMeta.type = type; - actionMeta.parent = meta.parent; - actionMeta.path = meta.path; - - var actionCreator = function actionCreator(payload) { - var action = { - type: type, - payload: payload - }; - - if (actionDefinition[actionOnSymbol] && actionMeta.resolvedTargets) { - payload.resolvedTargets = [].concat(actionMeta.resolvedTargets); - } - - var result = references.dispatch(action); - return result; - }; - - actionCreator.type = type; - return actionCreator; -} - -function createThunkHandler(thunkDefinition, meta, references, injections, actionCreators) { - var thunkMeta = thunkDefinition[thunkSymbol] || thunkDefinition[thunkOnSymbol]; - return function (payload) { - var helpers = { - dispatch: references.dispatch, - getState: function getState() { - return get$2(meta.parent, references.getState()); - }, - getStoreActions: function getStoreActions() { - return actionCreators; - }, - getStoreState: references.getState, - injections: injections, - meta: meta - }; - - if (thunkDefinition[thunkOnSymbol] && thunkMeta.resolvedTargets) { - payload.resolvedTargets = [].concat(thunkMeta.resolvedTargets); - } - - return thunkDefinition(get$2(meta.parent, actionCreators), payload, helpers); - }; -} -function createThunkActionsCreator(thunkDefinition, meta, references, thunkHandler) { - var prefix = thunkDefinition[thunkSymbol] ? '@thunk' : '@thunkOn'; - var type = prefix + "." + meta.path.join('.'); - var startType = type + "(start)"; - var successType = type + "(success)"; - var failType = type + "(fail)"; - var thunkMeta = thunkDefinition[thunkSymbol] || thunkDefinition[thunkOnSymbol]; - thunkMeta.type = type; - thunkMeta.actionName = meta.key; - thunkMeta.parent = meta.parent; - thunkMeta.path = meta.path; - - var actionCreator = function actionCreator(payload) { - var dispatchError = function dispatchError(err) { - references.dispatch({ - type: failType, - payload: payload, - error: err - }); - references.dispatch({ - type: type, - payload: payload, - error: err - }); - }; - - var dispatchSuccess = function dispatchSuccess(result) { - references.dispatch({ - type: successType, - payload: payload, - result: result - }); - references.dispatch({ - type: type, - payload: payload, - result: result - }); - }; - - references.dispatch({ - type: startType, - payload: payload - }); - - try { - var result = references.dispatch(function () { - return thunkHandler(payload); - }); - - if (isPromise(result)) { - return result.then(function (resolved) { - dispatchSuccess(resolved); - return resolved; - }).catch(function (err) { - dispatchError(err); - throw err; - }); - } - - dispatchSuccess(result); - return result; - } catch (err) { - dispatchError(err); - throw err; - } - }; - - actionCreator.type = type; - actionCreator.startType = startType; - actionCreator.successType = successType; - actionCreator.failType = failType; - return actionCreator; -} - -function createListenerMiddleware(references) { - return function () { - return function (next) { - return function (action) { - var result = next(action); - - if (action && references.internals.listenerActionMap[action.type] && references.internals.listenerActionMap[action.type].length > 0) { - var sourceAction = references.internals.actionCreatorDict[action.type]; - references.internals.listenerActionMap[action.type].forEach(function (actionCreator) { - actionCreator({ - type: sourceAction ? sourceAction.type : action.type, - payload: action.payload, - error: action.error, - result: action.result - }); - }); - } - - return result; - }; - }; - }; -} -function bindListenerDefinitions(listenerDefinitions, actionCreators, actionCreatorDict, listenerActionMap) { - listenerDefinitions.forEach(function (listenerActionOrThunk) { - var listenerMeta = listenerActionOrThunk[actionOnSymbol] || listenerActionOrThunk[thunkOnSymbol]; - var targets = listenerMeta.targetResolver(get$2(listenerMeta.parent, actionCreators), actionCreators); - var targetTypes = (Array.isArray(targets) ? targets : [targets]).reduce(function (acc, target) { - if (typeof target === 'function' && target.type && actionCreatorDict[target.type]) { - acc.push(target.type); - } else if (typeof target === 'string') { - acc.push(target); - } - - return acc; - }, []); - listenerMeta.resolvedTargets = targetTypes; - targetTypes.forEach(function (targetType) { - var listenerReg = listenerActionMap[targetType] || []; - listenerReg.push(actionCreatorDict[listenerMeta.type]); - listenerActionMap[targetType] = listenerReg; - }); - }); -} - -function createComputedPropertyBinder(parentPath, key, definition, computedState, references) { - var computedMeta = definition[computedSymbol]; - var memoisedResultFn = memoizerific(1)(definition); - return function createComputedProperty(o) { - Object.defineProperty(o, key, { - configurable: true, - enumerable: true, - get: function get$1() { - var storeState; - - if (computedState.isInReducer) { - storeState = computedState.currentState; - } else if (references.getState == null) { - return undefined; - } else { - try { - storeState = references.getState(); - } catch (err) { - { - console.warn('Invalid access attempt to a computed property'); - } - - return undefined; - } - } - - var state = get$2(parentPath, storeState); - - var inputs = computedMeta.stateResolvers.map(function (resolver) { - return resolver(state, storeState); - }); - return memoisedResultFn.apply(void 0, inputs); - } - }); - }; -} -function createComputedPropertiesMiddleware(references) { - return function (store) { - return function (next) { - return function (action) { - references.internals.computedState.currentState = store.getState(); - references.internals.computedState.isInReducer = true; - return next(action); - }; - }; - }; -} - -function extractDataFromModel(model, initialState, injections, references) { - var defaultState = initialState; - var actionCreatorDict = {}; - var actionCreators = {}; - var actionReducersDict = {}; - var actionThunks = {}; - var computedProperties = []; - var customReducers = []; - var listenerActionCreators = {}; - var listenerActionMap = {}; - var listenerDefinitions = []; - var persistenceConfig = []; - var computedState = { - isInReducer: false, - currentState: defaultState - }; - - var recursiveExtractFromModel = function recursiveExtractFromModel(current, parentPath) { - return Object.keys(current).forEach(function (key) { - var value = current[key]; - var path = [].concat(parentPath, [key]); - var meta = { - parent: parentPath, - path: path, - key: key - }; - - var handleValueAsState = function handleValueAsState() { - var initialParentRef = get$2(parentPath, initialState); - - if (initialParentRef && key in initialParentRef) { - set$2(path, defaultState, initialParentRef[key]); - } else { - set$2(path, defaultState, value); - } - }; - - if (key === persistSymbol) { - persistenceConfig.push(extractPersistConfig(parentPath, value)); - return; - } - - if (typeof value === 'function') { - if (value[actionSymbol] || value[actionOnSymbol]) { - var actionReducer = value; - var actionCreator = createActionCreator(value, meta, references); - actionCreatorDict[actionCreator.type] = actionCreator; - actionReducersDict[actionCreator.type] = actionReducer; - - if (meta.key !== 'ePRS') { - if (value[actionOnSymbol]) { - listenerDefinitions.push(value); - set$2(path, listenerActionCreators, actionCreator); - } else { - set$2(path, actionCreators, actionCreator); - } - } - } else if (value[thunkSymbol] || value[thunkOnSymbol]) { - var thunkHandler = createThunkHandler(value, meta, references, injections, actionCreators); - - var _actionCreator = createThunkActionsCreator(value, meta, references, thunkHandler); - - set$2(path, actionThunks, thunkHandler); - actionCreatorDict[_actionCreator.type] = _actionCreator; - - if (value[thunkOnSymbol]) { - listenerDefinitions.push(value); - set$2(path, listenerActionCreators, _actionCreator); - } else { - set$2(path, actionCreators, _actionCreator); - } - } else if (value[computedSymbol]) { - var parent = get$2(parentPath, defaultState); - var bindComputedProperty = createComputedPropertyBinder(parentPath, key, value, computedState, references); - bindComputedProperty(parent); - computedProperties.push({ - key: key, - parentPath: parentPath, - bindComputedProperty: bindComputedProperty - }); - } else if (value[reducerSymbol]) { - customReducers.push({ - key: key, - parentPath: parentPath, - reducer: value - }); - } else { - handleValueAsState(); - } - } else if (isPlainObject$1(value)) { - var existing = get$2(path, defaultState); - - if (existing == null) { - set$2(path, defaultState, {}); - } - - recursiveExtractFromModel(value, path); - } else { - handleValueAsState(); - } - }); - }; - - recursiveExtractFromModel(model, []); - bindListenerDefinitions(listenerDefinitions, actionCreators, actionCreatorDict, listenerActionMap); - return { - actionCreatorDict: actionCreatorDict, - actionCreators: actionCreators, - actionReducersDict: actionReducersDict, - computedProperties: computedProperties, - customReducers: customReducers, - computedState: computedState, - defaultState: defaultState, - listenerActionCreators: listenerActionCreators, - listenerActionMap: listenerActionMap, - persistenceConfig: persistenceConfig - }; -} - -function createStoreInternals(_ref) { - var disableImmer = _ref.disableImmer, - initialState = _ref.initialState, - injections = _ref.injections, - model = _ref.model, - reducerEnhancer = _ref.reducerEnhancer, - references = _ref.references; - - var _extractDataFromModel = extractDataFromModel(model, initialState, injections, references), - actionCreatorDict = _extractDataFromModel.actionCreatorDict, - actionCreators = _extractDataFromModel.actionCreators, - actionReducersDict = _extractDataFromModel.actionReducersDict, - computedState = _extractDataFromModel.computedState, - computedProperties = _extractDataFromModel.computedProperties, - customReducers = _extractDataFromModel.customReducers, - defaultState = _extractDataFromModel.defaultState, - listenerActionCreators = _extractDataFromModel.listenerActionCreators, - listenerActionMap = _extractDataFromModel.listenerActionMap, - persistenceConfig = _extractDataFromModel.persistenceConfig; - - var rootReducer = createReducer(disableImmer, actionReducersDict, customReducers, computedProperties); - return { - actionCreatorDict: actionCreatorDict, - actionCreators: actionCreators, - computedProperties: computedProperties, - computedState: computedState, - defaultState: defaultState, - listenerActionCreators: listenerActionCreators, - listenerActionMap: listenerActionMap, - persistenceConfig: persistenceConfig, - reducer: reducerEnhancer(rootReducer) - }; -} - -function createStore$1(model, options) { - if (options === void 0) { - options = {}; - } - - var modelClone = deepCloneStateWithoutComputed(model); - var _options = options, - compose$1 = _options.compose, - _options$devTools = _options.devTools, - devTools = _options$devTools === void 0 ? true : _options$devTools, - _options$disableImmer = _options.disableImmer, - disableImmer = _options$disableImmer === void 0 ? false : _options$disableImmer, - _options$enhancers = _options.enhancers, - enhancers = _options$enhancers === void 0 ? [] : _options$enhancers, - _options$initialState = _options.initialState, - initialState = _options$initialState === void 0 ? {} : _options$initialState, - injections = _options.injections, - _options$middleware = _options.middleware, - middleware = _options$middleware === void 0 ? [] : _options$middleware, - _options$mockActions = _options.mockActions, - mockActions = _options$mockActions === void 0 ? false : _options$mockActions, - _options$name = _options.name, - storeName = _options$name === void 0 ? "EasyPeasyStore" : _options$name, - _options$reducerEnhan = _options.reducerEnhancer, - reducerEnhancer = _options$reducerEnhan === void 0 ? function (rootReducer) { - return rootReducer; - } : _options$reducerEnhan; - - var bindReplaceState = function bindReplaceState(modelDef) { - return _extends({}, modelDef, { - ePRS: action(function (_, payload) { - return payload; - }) - }); - }; - - var references = {}; - var modelDefinition = bindReplaceState(modelClone); - var mockedActions = []; - - var persistKey = function persistKey(targetPath) { - return "[" + storeName + "]@" + targetPath.join('.'); - }; - - var persistor = createPersistor(persistKey, references); - var persistMiddleware = createPersistMiddleware(persistor, references); - var clearPersistance = createPersistenceClearer(persistKey, references); - - var replaceState = function replaceState(nextState) { - return references.internals.actionCreatorDict['@action.ePRS'](nextState); - }; - - var bindStoreInternals = function bindStoreInternals(state) { - if (state === void 0) { - state = {}; - } - - references.internals = createStoreInternals({ - disableImmer: disableImmer, - initialState: state, - injections: injections, - model: modelDefinition, - reducerEnhancer: reducerEnhancer, - references: references - }); - }; - - var mockActionsMiddleware = function mockActionsMiddleware() { - return function () { - return function (action) { - if (action != null) { - mockedActions.push(action); - } - - return undefined; - }; - }; - }; - - var composeEnhancers = compose$1 || (devTools && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ - name: storeName - }) : compose); - bindStoreInternals(initialState); - var easyPeasyMiddleware = [createComputedPropertiesMiddleware(references), thunk].concat(middleware, [createListenerMiddleware(references), persistMiddleware]); - - if (mockActions) { - easyPeasyMiddleware.push(mockActionsMiddleware); - } - - var store = createStore(references.internals.reducer, references.internals.defaultState, composeEnhancers.apply(void 0, [applyMiddleware.apply(void 0, easyPeasyMiddleware)].concat(enhancers))); - store.subscribe(function () { - references.internals.computedState.isInReducer = false; - }); - references.dispatch = store.dispatch; - references.getState = store.getState; - - var bindActionCreators = function bindActionCreators() { - Object.keys(store.dispatch).forEach(function (actionsKey) { - delete store.dispatch[actionsKey]; - }); - Object.keys(references.internals.actionCreators).forEach(function (key) { - store.dispatch[key] = references.internals.actionCreators[key]; - }); - }; - - bindActionCreators(); - - var rebindStore = function rebindStore(removeKey) { - var currentState = store.getState(); - - if (removeKey) { - delete currentState[removeKey]; - } - - bindStoreInternals(currentState); - store.replaceReducer(references.internals.reducer); - replaceState(references.internals.defaultState); - bindActionCreators(); - }; - - var _resolveRehydration = rehydrateStateFromPersistIfNeeded(persistKey, replaceState, references); - - return Object.assign(store, { - addModel: function addModel(key, modelForKey) { - if (modelDefinition[key] && "development" !== 'production') { - // eslint-disable-next-line no-console - console.warn("easy-peasy: The store model already contains a model definition for \"" + key + "\""); - store.removeModel(key); - } - - modelDefinition[key] = modelForKey; - rebindStore(); - }, - clearMockedActions: function clearMockedActions() { - mockedActions = []; - }, - getActions: function getActions() { - return references.internals.actionCreators; - }, - getListeners: function getListeners() { - return references.internals.listenerActionCreators; - }, - getMockedActions: function getMockedActions() { - return [].concat(mockedActions); - }, - persist: { - clear: clearPersistance, - flush: function flush() { - return persistor.flush(); - }, - resolveRehydration: function resolveRehydration() { - return _resolveRehydration; - } - }, - reconfigure: function reconfigure(newModel) { - modelDefinition = bindReplaceState(newModel); - rebindStore(); - }, - removeModel: function removeModel(key) { - if (!modelDefinition[key]) { - { - // eslint-disable-next-line no-console - console.warn("easy-peasy: The store model does not contain a model definition for \"" + key + "\""); - } - - return; - } - - delete modelDefinition[key]; - rebindStore(key); - } - }); -} - -function StoreProvider(_ref) { - var children = _ref.children, - store = _ref.store; - return React__default.createElement(StoreContext.Provider, { - value: store - }, children); -} - -/** - * The auto freeze feature of immer doesn't seem to work in our testing. We have - * explicitly disabled it to avoid perf issues. - */ - -setAutoFreeze(false); - -function unwrapExports (x) { - return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; -} - -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; -} - -var classnames = createCommonjsModule(function (module) { -/*! - Copyright (c) 2017 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/ -/* global define */ - -(function () { - - var hasOwn = {}.hasOwnProperty; - - function classNames () { - var classes = []; - - for (var i = 0; i < arguments.length; i++) { - var arg = arguments[i]; - if (!arg) continue; - - var argType = typeof arg; - - if (argType === 'string' || argType === 'number') { - classes.push(arg); - } else if (Array.isArray(arg) && arg.length) { - var inner = classNames.apply(null, arg); - if (inner) { - classes.push(inner); - } - } else if (argType === 'object') { - for (var key in arg) { - if (hasOwn.call(arg, key) && arg[key]) { - classes.push(key); - } - } - } - } - - return classes.join(' '); - } - - if ( module.exports) { - classNames.default = classNames; - module.exports = classNames; - } else { - window.classNames = classNames; - } -}()); -}); - -var typedHooks = createTypedHooks(); -var useStoreActions$1 = typedHooks.useStoreActions; -var useStoreState$1 = typedHooks.useStoreState; - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -} - -var noop = {value: function() {}}; - -function dispatch() { - for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { - if (!(t = arguments[i] + "") || (t in _)) throw new Error("illegal type: " + t); - _[t] = []; - } - return new Dispatch(_); -} - -function Dispatch(_) { - this._ = _; -} - -function parseTypenames(typenames, types) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); - return {type: t, name: name}; - }); -} - -Dispatch.prototype = dispatch.prototype = { - constructor: Dispatch, - on: function(typename, callback) { - var _ = this._, - T = parseTypenames(typename + "", _), - t, - i = -1, - n = T.length; - - // If no callback was specified, return the callback of the given type and name. - if (arguments.length < 2) { - while (++i < n) if ((t = (typename = T[i]).type) && (t = get$3(_[t], typename.name))) return t; - return; - } - - // If a type was specified, set the callback for the given type and name. - // Otherwise, if a null callback was specified, remove callbacks of the given name. - if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); - while (++i < n) { - if (t = (typename = T[i]).type) _[t] = set$3(_[t], typename.name, callback); - else if (callback == null) for (t in _) _[t] = set$3(_[t], typename.name, null); - } - - return this; - }, - copy: function() { - var copy = {}, _ = this._; - for (var t in _) copy[t] = _[t].slice(); - return new Dispatch(copy); - }, - call: function(type, that) { - if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - }, - apply: function(type, that, args) { - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - } -}; - -function get$3(type, name) { - for (var i = 0, n = type.length, c; i < n; ++i) { - if ((c = type[i]).name === name) { - return c.value; - } - } -} - -function set$3(type, name, callback) { - for (var i = 0, n = type.length; i < n; ++i) { - if (type[i].name === name) { - type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); - break; - } - } - if (callback != null) type.push({name: name, value: callback}); - return type; -} - -var xhtml = "http://www.w3.org/1999/xhtml"; - -var namespaces = { - svg: "http://www.w3.org/2000/svg", - xhtml: xhtml, - xlink: "http://www.w3.org/1999/xlink", - xml: "http://www.w3.org/XML/1998/namespace", - xmlns: "http://www.w3.org/2000/xmlns/" -}; - -function namespace(name) { - var prefix = name += "", i = prefix.indexOf(":"); - if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); - return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; -} - -function creatorInherit(name) { - return function() { - var document = this.ownerDocument, - uri = this.namespaceURI; - return uri === xhtml && document.documentElement.namespaceURI === xhtml - ? document.createElement(name) - : document.createElementNS(uri, name); - }; -} - -function creatorFixed(fullname) { - return function() { - return this.ownerDocument.createElementNS(fullname.space, fullname.local); - }; -} - -function creator(name) { - var fullname = namespace(name); - return (fullname.local - ? creatorFixed - : creatorInherit)(fullname); -} - -function none() {} - -function selector(selector) { - return selector == null ? none : function() { - return this.querySelector(selector); - }; -} - -function selection_select(select) { - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - } - } - } - - return new Selection(subgroups, this._parents); -} - -function empty() { - return []; -} - -function selectorAll(selector) { - return selector == null ? empty : function() { - return this.querySelectorAll(selector); - }; -} - -function selection_selectAll(select) { - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - subgroups.push(select.call(node, node.__data__, i, group)); - parents.push(node); - } - } - } - - return new Selection(subgroups, parents); -} - -function matcher(selector) { - return function() { - return this.matches(selector); - }; -} - -function selection_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Selection(subgroups, this._parents); -} - -function sparse(update) { - return new Array(update.length); -} - -function selection_enter() { - return new Selection(this._enter || this._groups.map(sparse), this._parents); -} - -function EnterNode(parent, datum) { - this.ownerDocument = parent.ownerDocument; - this.namespaceURI = parent.namespaceURI; - this._next = null; - this._parent = parent; - this.__data__ = datum; -} - -EnterNode.prototype = { - constructor: EnterNode, - appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, - insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, - querySelector: function(selector) { return this._parent.querySelector(selector); }, - querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } -}; - -function constant(x) { - return function() { - return x; - }; -} - -var keyPrefix = "$"; // Protect against keys like “__proto__”. - -function bindIndex(parent, group, enter, update, exit, data) { - var i = 0, - node, - groupLength = group.length, - dataLength = data.length; - - // Put any non-null nodes that fit into update. - // Put any null nodes into enter. - // Put any remaining data into enter. - for (; i < dataLength; ++i) { - if (node = group[i]) { - node.__data__ = data[i]; - update[i] = node; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Put any non-null nodes that don’t fit into exit. - for (; i < groupLength; ++i) { - if (node = group[i]) { - exit[i] = node; - } - } -} - -function bindKey(parent, group, enter, update, exit, data, key) { - var i, - node, - nodeByKeyValue = {}, - groupLength = group.length, - dataLength = data.length, - keyValues = new Array(groupLength), - keyValue; - - // Compute the key for each node. - // If multiple nodes have the same key, the duplicates are added to exit. - for (i = 0; i < groupLength; ++i) { - if (node = group[i]) { - keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group); - if (keyValue in nodeByKeyValue) { - exit[i] = node; - } else { - nodeByKeyValue[keyValue] = node; - } - } - } - - // Compute the key for each datum. - // If there a node associated with this key, join and add it to update. - // If there is not (or the key is a duplicate), add it to enter. - for (i = 0; i < dataLength; ++i) { - keyValue = keyPrefix + key.call(parent, data[i], i, data); - if (node = nodeByKeyValue[keyValue]) { - update[i] = node; - node.__data__ = data[i]; - nodeByKeyValue[keyValue] = null; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Add any remaining nodes that were not bound to data to exit. - for (i = 0; i < groupLength; ++i) { - if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) { - exit[i] = node; - } - } -} - -function selection_data(value, key) { - if (!value) { - data = new Array(this.size()), j = -1; - this.each(function(d) { data[++j] = d; }); - return data; - } - - var bind = key ? bindKey : bindIndex, - parents = this._parents, - groups = this._groups; - - if (typeof value !== "function") value = constant(value); - - for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { - var parent = parents[j], - group = groups[j], - groupLength = group.length, - data = value.call(parent, parent && parent.__data__, j, parents), - dataLength = data.length, - enterGroup = enter[j] = new Array(dataLength), - updateGroup = update[j] = new Array(dataLength), - exitGroup = exit[j] = new Array(groupLength); - - bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); - - // Now connect the enter nodes to their following update node, such that - // appendChild can insert the materialized enter node before this node, - // rather than at the end of the parent node. - for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { - if (previous = enterGroup[i0]) { - if (i0 >= i1) i1 = i0 + 1; - while (!(next = updateGroup[i1]) && ++i1 < dataLength); - previous._next = next || null; - } - } - } - - update = new Selection(update, parents); - update._enter = enter; - update._exit = exit; - return update; -} - -function selection_exit() { - return new Selection(this._exit || this._groups.map(sparse), this._parents); -} - -function selection_join(onenter, onupdate, onexit) { - var enter = this.enter(), update = this, exit = this.exit(); - enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + ""); - if (onupdate != null) update = onupdate(update); - if (onexit == null) exit.remove(); else onexit(exit); - return enter && update ? enter.merge(update).order() : update; -} - -function selection_merge(selection) { - - 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) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Selection(merges, this._parents); -} - -function selection_order() { - - for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { - for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { - if (node = group[i]) { - if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next); - next = node; - } - } - } - - return this; -} - -function selection_sort(compare) { - if (!compare) compare = ascending; - - function compareNode(a, b) { - return a && b ? compare(a.__data__, b.__data__) : !a - !b; - } - - for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group[i]) { - sortgroup[i] = node; - } - } - sortgroup.sort(compareNode); - } - - return new Selection(sortgroups, this._parents).order(); -} - -function ascending(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function selection_call() { - var callback = arguments[0]; - arguments[0] = this; - callback.apply(null, arguments); - return this; -} - -function selection_nodes() { - var nodes = new Array(this.size()), i = -1; - this.each(function() { nodes[++i] = this; }); - return nodes; -} - -function selection_node() { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { - var node = group[i]; - if (node) return node; - } - } - - return null; -} - -function selection_size() { - var size = 0; - this.each(function() { ++size; }); - return size; -} - -function selection_empty() { - return !this.node(); -} - -function selection_each(callback) { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { - if (node = group[i]) callback.call(node, node.__data__, i, group); - } - } - - return this; -} - -function attrRemove(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant(name, value) { - return function() { - this.setAttribute(name, value); - }; -} - -function attrConstantNS(fullname, value) { - return function() { - this.setAttributeNS(fullname.space, fullname.local, value); - }; -} - -function attrFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttribute(name); - else this.setAttribute(name, v); - }; -} - -function attrFunctionNS(fullname, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttributeNS(fullname.space, fullname.local); - else this.setAttributeNS(fullname.space, fullname.local, v); - }; -} - -function selection_attr(name, value) { - var fullname = namespace(name); - - if (arguments.length < 2) { - var node = this.node(); - return fullname.local - ? node.getAttributeNS(fullname.space, fullname.local) - : node.getAttribute(fullname); - } - - return this.each((value == null - ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function" - ? (fullname.local ? attrFunctionNS : attrFunction) - : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value)); -} - -function defaultView(node) { - return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node - || (node.document && node) // node is a Window - || node.defaultView; // node is a Document -} - -function styleRemove(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant(name, value, priority) { - return function() { - this.style.setProperty(name, value, priority); - }; -} - -function styleFunction(name, value, priority) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.style.removeProperty(name); - else this.style.setProperty(name, v, priority); - }; -} - -function selection_style(name, value, priority) { - return arguments.length > 1 - ? this.each((value == null - ? styleRemove : typeof value === "function" - ? styleFunction - : styleConstant)(name, value, priority == null ? "" : priority)) - : styleValue(this.node(), name); -} - -function styleValue(node, name) { - return node.style.getPropertyValue(name) - || defaultView(node).getComputedStyle(node, null).getPropertyValue(name); -} - -function propertyRemove(name) { - return function() { - delete this[name]; - }; -} - -function propertyConstant(name, value) { - return function() { - this[name] = value; - }; -} - -function propertyFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) delete this[name]; - else this[name] = v; - }; -} - -function selection_property(name, value) { - return arguments.length > 1 - ? this.each((value == null - ? propertyRemove : typeof value === "function" - ? propertyFunction - : propertyConstant)(name, value)) - : this.node()[name]; -} - -function classArray(string) { - return string.trim().split(/^|\s+/); -} - -function classList(node) { - return node.classList || new ClassList(node); -} - -function ClassList(node) { - this._node = node; - this._names = classArray(node.getAttribute("class") || ""); -} - -ClassList.prototype = { - add: function(name) { - var i = this._names.indexOf(name); - if (i < 0) { - this._names.push(name); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - remove: function(name) { - var i = this._names.indexOf(name); - if (i >= 0) { - this._names.splice(i, 1); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - contains: function(name) { - return this._names.indexOf(name) >= 0; - } -}; - -function classedAdd(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.add(names[i]); -} - -function classedRemove(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.remove(names[i]); -} - -function classedTrue(names) { - return function() { - classedAdd(this, names); - }; -} - -function classedFalse(names) { - return function() { - classedRemove(this, names); - }; -} - -function classedFunction(names, value) { - return function() { - (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); - }; -} - -function selection_classed(name, value) { - var names = classArray(name + ""); - - if (arguments.length < 2) { - var list = classList(this.node()), i = -1, n = names.length; - while (++i < n) if (!list.contains(names[i])) return false; - return true; - } - - return this.each((typeof value === "function" - ? classedFunction : value - ? classedTrue - : classedFalse)(names, value)); -} - -function textRemove() { - this.textContent = ""; -} - -function textConstant(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.textContent = v == null ? "" : v; - }; -} - -function selection_text(value) { - return arguments.length - ? this.each(value == null - ? textRemove : (typeof value === "function" - ? textFunction - : textConstant)(value)) - : this.node().textContent; -} - -function htmlRemove() { - this.innerHTML = ""; -} - -function htmlConstant(value) { - return function() { - this.innerHTML = value; - }; -} - -function htmlFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.innerHTML = v == null ? "" : v; - }; -} - -function selection_html(value) { - return arguments.length - ? this.each(value == null - ? htmlRemove : (typeof value === "function" - ? htmlFunction - : htmlConstant)(value)) - : this.node().innerHTML; -} - -function raise() { - if (this.nextSibling) this.parentNode.appendChild(this); -} - -function selection_raise() { - return this.each(raise); -} - -function lower() { - if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); -} - -function selection_lower() { - return this.each(lower); -} - -function selection_append(name) { - var create = typeof name === "function" ? name : creator(name); - return this.select(function() { - return this.appendChild(create.apply(this, arguments)); - }); -} - -function constantNull() { - return null; -} - -function selection_insert(name, before) { - var create = typeof name === "function" ? name : creator(name), - select = before == null ? constantNull : typeof before === "function" ? before : selector(before); - return this.select(function() { - return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); - }); -} - -function remove() { - var parent = this.parentNode; - if (parent) parent.removeChild(this); -} - -function selection_remove() { - return this.each(remove); -} - -function selection_cloneShallow() { - var clone = this.cloneNode(false), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_cloneDeep() { - var clone = this.cloneNode(true), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_clone(deep) { - return this.select(deep ? selection_cloneDeep : selection_cloneShallow); -} - -function selection_datum(value) { - return arguments.length - ? this.property("__data__", value) - : this.node().__data__; -} - -var filterEvents = {}; - -var event = null; - -if (typeof document !== "undefined") { - var element = document.documentElement; - if (!("onmouseenter" in element)) { - filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"}; - } -} - -function filterContextListener(listener, index, group) { - listener = contextListener(listener, index, group); - return function(event) { - var related = event.relatedTarget; - if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) { - listener.call(this, event); - } - }; -} - -function contextListener(listener, index, group) { - return function(event1) { - var event0 = event; // Events can be reentrant (e.g., focus). - event = event1; - try { - listener.call(this, this.__data__, index, group); - } finally { - event = event0; - } - }; -} - -function parseTypenames$1(typenames) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - return {type: t, name: name}; - }); -} - -function onRemove(typename) { - return function() { - var on = this.__on; - if (!on) return; - for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { - if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.capture); - } else { - on[++i] = o; - } - } - if (++i) on.length = i; - else delete this.__on; - }; -} - -function onAdd(typename, value, capture) { - var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener; - return function(d, i, group) { - var on = this.__on, o, listener = wrap(value, i, group); - if (on) for (var j = 0, m = on.length; j < m; ++j) { - if ((o = on[j]).type === typename.type && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.capture); - this.addEventListener(o.type, o.listener = listener, o.capture = capture); - o.value = value; - return; - } - } - this.addEventListener(typename.type, listener, capture); - o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture}; - if (!on) this.__on = [o]; - else on.push(o); - }; -} - -function selection_on(typename, value, capture) { - var typenames = parseTypenames$1(typename + ""), i, n = typenames.length, t; - - if (arguments.length < 2) { - var on = this.node().__on; - if (on) for (var j = 0, m = on.length, o; j < m; ++j) { - for (i = 0, o = on[j]; i < n; ++i) { - if ((t = typenames[i]).type === o.type && t.name === o.name) { - return o.value; - } - } - } - return; - } - - on = value ? onAdd : onRemove; - if (capture == null) capture = false; - for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture)); - return this; -} - -function customEvent(event1, listener, that, args) { - var event0 = event; - event1.sourceEvent = event; - event = event1; - try { - return listener.apply(that, args); - } finally { - event = event0; - } -} - -function dispatchEvent(node, type, params) { - var window = defaultView(node), - event = window.CustomEvent; - - if (typeof event === "function") { - event = new event(type, params); - } else { - event = window.document.createEvent("Event"); - if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail; - else event.initEvent(type, false, false); - } - - node.dispatchEvent(event); -} - -function dispatchConstant(type, params) { - return function() { - return dispatchEvent(this, type, params); - }; -} - -function dispatchFunction(type, params) { - return function() { - return dispatchEvent(this, type, params.apply(this, arguments)); - }; -} - -function selection_dispatch(type, params) { - return this.each((typeof params === "function" - ? dispatchFunction - : dispatchConstant)(type, params)); -} - -var root$1 = [null]; - -function Selection(groups, parents) { - this._groups = groups; - this._parents = parents; -} - -function selection() { - return new Selection([[document.documentElement]], root$1); -} - -Selection.prototype = selection.prototype = { - constructor: Selection, - select: selection_select, - selectAll: selection_selectAll, - filter: selection_filter, - data: selection_data, - enter: selection_enter, - exit: selection_exit, - join: selection_join, - merge: selection_merge, - order: selection_order, - sort: selection_sort, - call: selection_call, - nodes: selection_nodes, - node: selection_node, - size: selection_size, - empty: selection_empty, - each: selection_each, - attr: selection_attr, - style: selection_style, - property: selection_property, - classed: selection_classed, - text: selection_text, - html: selection_html, - raise: selection_raise, - lower: selection_lower, - append: selection_append, - insert: selection_insert, - remove: selection_remove, - clone: selection_clone, - datum: selection_datum, - on: selection_on, - dispatch: selection_dispatch -}; - -function select(selector) { - return typeof selector === "string" - ? new Selection([[document.querySelector(selector)]], [document.documentElement]) - : new Selection([[selector]], root$1); -} - -function sourceEvent() { - var current = event, source; - while (source = current.sourceEvent) current = source; - return current; -} - -function point(node, event) { - var svg = node.ownerSVGElement || node; - - if (svg.createSVGPoint) { - var point = svg.createSVGPoint(); - point.x = event.clientX, point.y = event.clientY; - point = point.matrixTransform(node.getScreenCTM().inverse()); - return [point.x, point.y]; - } - - var rect = node.getBoundingClientRect(); - return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; -} - -function mouse(node) { - var event = sourceEvent(); - if (event.changedTouches) event = event.changedTouches[0]; - return point(node, event); -} - -function touch(node, touches, identifier) { - if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches; - - for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) { - if ((touch = touches[i]).identifier === identifier) { - return point(node, touch); - } - } - - return null; -} - -function noevent() { - event.preventDefault(); - event.stopImmediatePropagation(); -} - -function dragDisable(view) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", noevent, true); - if ("onselectstart" in root) { - selection.on("selectstart.drag", noevent, true); - } else { - root.__noselect = root.style.MozUserSelect; - root.style.MozUserSelect = "none"; - } -} - -function yesdrag(view, noclick) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", null); - if (noclick) { - selection.on("click.drag", noevent, true); - setTimeout(function() { selection.on("click.drag", null); }, 0); - } - if ("onselectstart" in root) { - selection.on("selectstart.drag", null); - } else { - root.style.MozUserSelect = root.__noselect; - delete root.__noselect; - } -} - -function define(constructor, factory, prototype) { - constructor.prototype = factory.prototype = prototype; - prototype.constructor = constructor; -} - -function extend(parent, definition) { - var prototype = Object.create(parent.prototype); - for (var key in definition) prototype[key] = definition[key]; - return prototype; -} - -function Color() {} - -var darker = 0.7; -var brighter = 1 / darker; - -var reI = "\\s*([+-]?\\d+)\\s*", - reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", - reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", - reHex = /^#([0-9a-f]{3,8})$/, - reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"), - reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"), - reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"), - reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"), - reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"), - reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$"); - -var named = { - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgreen: 0x006400, - darkgrey: 0xa9a9a9, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - grey: 0x808080, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgreen: 0x90ee90, - lightgrey: 0xd3d3d3, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 -}; - -define(Color, color, { - copy: function(channels) { - return Object.assign(new this.constructor, this, channels); - }, - displayable: function() { - return this.rgb().displayable(); - }, - hex: color_formatHex, // Deprecated! Use color.formatHex. - formatHex: color_formatHex, - formatHsl: color_formatHsl, - formatRgb: color_formatRgb, - toString: color_formatRgb -}); - -function color_formatHex() { - return this.rgb().formatHex(); -} - -function color_formatHsl() { - return hslConvert(this).formatHsl(); -} - -function color_formatRgb() { - return this.rgb().formatRgb(); -} - -function color(format) { - var m, l; - format = (format + "").trim().toLowerCase(); - return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000 - : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00 - : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000 - : 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 - : null) // invalid hex - : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) - : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) - : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) - : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) - : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) - : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) - : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins - : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) - : null; -} - -function rgbn(n) { - return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); -} - -function rgba(r, g, b, a) { - if (a <= 0) r = g = b = NaN; - return new Rgb(r, g, b, a); -} - -function rgbConvert(o) { - if (!(o instanceof Color)) o = color(o); - if (!o) return new Rgb; - o = o.rgb(); - return new Rgb(o.r, o.g, o.b, o.opacity); -} - -function rgb(r, g, b, opacity) { - return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); -} - -function Rgb(r, g, b, opacity) { - this.r = +r; - this.g = +g; - this.b = +b; - this.opacity = +opacity; -} - -define(Rgb, rgb, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - rgb: function() { - return this; - }, - displayable: function() { - return (-0.5 <= this.r && this.r < 255.5) - && (-0.5 <= this.g && this.g < 255.5) - && (-0.5 <= this.b && this.b < 255.5) - && (0 <= this.opacity && this.opacity <= 1); - }, - hex: rgb_formatHex, // Deprecated! Use color.formatHex. - formatHex: rgb_formatHex, - formatRgb: rgb_formatRgb, - toString: rgb_formatRgb -})); - -function rgb_formatHex() { - return "#" + hex(this.r) + hex(this.g) + hex(this.b); -} - -function rgb_formatRgb() { - var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "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)) - + (a === 1 ? ")" : ", " + a + ")"); -} - -function hex(value) { - value = Math.max(0, Math.min(255, Math.round(value) || 0)); - return (value < 16 ? "0" : "") + value.toString(16); -} - -function hsla(h, s, l, a) { - if (a <= 0) h = s = l = NaN; - else if (l <= 0 || l >= 1) h = s = NaN; - else if (s <= 0) h = NaN; - return new Hsl(h, s, l, a); -} - -function hslConvert(o) { - if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Color)) o = color(o); - if (!o) return new Hsl; - if (o instanceof Hsl) return o; - o = o.rgb(); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - h = NaN, - s = max - min, - l = (max + min) / 2; - if (s) { - if (r === max) h = (g - b) / s + (g < b) * 6; - else if (g === max) h = (b - r) / s + 2; - else h = (r - g) / s + 4; - s /= l < 0.5 ? max + min : 2 - max - min; - h *= 60; - } else { - s = l > 0 && l < 1 ? 0 : h; - } - return new Hsl(h, s, l, o.opacity); -} - -function hsl(h, s, l, opacity) { - return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); -} - -function Hsl(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; -} - -define(Hsl, hsl, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - rgb: function() { - var h = this.h % 360 + (this.h < 0) * 360, - s = isNaN(h) || isNaN(this.s) ? 0 : this.s, - l = this.l, - m2 = l + (l < 0.5 ? l : 1 - l) * s, - m1 = 2 * l - m2; - return new Rgb( - hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), - hsl2rgb(h, m1, m2), - hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), - 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 a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "hsl(" : "hsla(") - + (this.h || 0) + ", " - + (this.s || 0) * 100 + "%, " - + (this.l || 0) * 100 + "%" - + (a === 1 ? ")" : ", " + a + ")"); - } -})); - -/* From FvD 13.37, CSS Color Module Level 3 */ -function hsl2rgb(h, m1, m2) { - return (h < 60 ? m1 + (m2 - m1) * h / 60 - : h < 180 ? m2 - : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 - : m1) * 255; -} - -function constant$1(x) { - return function() { - return x; - }; -} - -function linear(a, d) { - return function(t) { - return a + t * d; - }; -} - -function exponential(a, b, y) { - return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { - return Math.pow(a + t * b, y); - }; -} - -function gamma(y) { - return (y = +y) === 1 ? nogamma : function(a, b) { - return b - a ? exponential(a, b, y) : constant$1(isNaN(a) ? b : a); - }; -} - -function nogamma(a, b) { - var d = b - a; - return d ? linear(a, d) : constant$1(isNaN(a) ? b : a); -} - -var interpolateRgb = (function rgbGamma(y) { - var color = gamma(y); - - function rgb$1(start, end) { - var r = color((start = rgb(start)).r, (end = rgb(end)).r), - g = color(start.g, end.g), - b = color(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.r = r(t); - start.g = g(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; - } - - rgb$1.gamma = rgbGamma; - - return rgb$1; -})(1); - -function interpolateNumber(a, b) { - return a = +a, b -= a, function(t) { - return a + b * t; - }; -} - -var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, - reB = new RegExp(reA.source, "g"); - -function zero(b) { - return function() { - return b; - }; -} - -function one(b) { - return function(t) { - return b(t) + ""; - }; -} - -function interpolateString(a, b) { - var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b - am, // current match in a - bm, // current match in b - bs, // string preceding current number in b, if any - i = -1, // index in s - s = [], // string constants and placeholders - q = []; // number interpolators - - // Coerce inputs to strings. - a = a + "", b = b + ""; - - // Interpolate pairs of numbers in a & b. - while ((am = reA.exec(a)) - && (bm = reB.exec(b))) { - if ((bs = bm.index) > bi) { // a string precedes the next number in b - bs = b.slice(bi, bs); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match - if (s[i]) s[i] += bm; // coalesce with previous string - else s[++i] = bm; - } else { // interpolate non-matching numbers - s[++i] = null; - q.push({i: i, x: interpolateNumber(am, bm)}); - } - bi = reB.lastIndex; - } - - // Add remains of b. - if (bi < b.length) { - bs = b.slice(bi); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - - // Special optimization for only a single match. - // Otherwise, interpolate each of the numbers and rejoin the string. - return s.length < 2 ? (q[0] - ? one(q[0].x) - : zero(b)) - : (b = q.length, function(t) { - for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }); -} - -var degrees = 180 / Math.PI; - -var identity = { - translateX: 0, - translateY: 0, - rotate: 0, - skewX: 0, - scaleX: 1, - scaleY: 1 -}; - -function decompose(a, b, c, d, e, f) { - var scaleX, scaleY, skewX; - if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; - if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; - if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; - if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; - return { - translateX: e, - translateY: f, - rotate: Math.atan2(b, a) * degrees, - skewX: Math.atan(skewX) * degrees, - scaleX: scaleX, - scaleY: scaleY - }; -} - -var cssNode, - cssRoot, - cssView, - svgNode; - -function parseCss(value) { - if (value === "none") return identity; - if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView; - cssNode.style.transform = value; - value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform"); - cssRoot.removeChild(cssNode); - value = value.slice(7, -1).split(","); - return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]); -} - -function parseSvg(value) { - if (value == null) return identity; - if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); - svgNode.setAttribute("transform", value); - if (!(value = svgNode.transform.baseVal.consolidate())) return identity; - value = value.matrix; - return decompose(value.a, value.b, value.c, value.d, value.e, value.f); -} - -function interpolateTransform(parse, pxComma, pxParen, degParen) { - - function pop(s) { - return s.length ? s.pop() + " " : ""; - } - - function translate(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push("translate(", null, pxComma, null, pxParen); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb || yb) { - s.push("translate(" + xb + pxComma + yb + pxParen); - } - } - - function rotate(a, b, s, q) { - if (a !== b) { - if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path - q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "rotate(" + b + degParen); - } - } - - function skewX(a, b, s, q) { - if (a !== b) { - q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "skewX(" + b + degParen); - } - } - - function scale(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push(pop(s) + "scale(", null, ",", null, ")"); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb !== 1 || yb !== 1) { - s.push(pop(s) + "scale(" + xb + "," + yb + ")"); - } - } - - return function(a, b) { - var s = [], // string constants and placeholders - q = []; // number interpolators - a = parse(a), b = parse(b); - translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); - rotate(a.rotate, b.rotate, s, q); - skewX(a.skewX, b.skewX, s, q); - scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); - a = b = null; // gc - return function(t) { - var i = -1, n = q.length, o; - while (++i < n) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }; - }; -} - -var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); -var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); - -var rho = Math.SQRT2, - rho2 = 2, - rho4 = 4, - epsilon2 = 1e-12; - -function cosh(x) { - return ((x = Math.exp(x)) + 1 / x) / 2; -} - -function sinh(x) { - return ((x = Math.exp(x)) - 1 / x) / 2; -} - -function tanh(x) { - return ((x = Math.exp(2 * x)) - 1) / (x + 1); -} - -// p0 = [ux0, uy0, w0] -// p1 = [ux1, uy1, w1] -function interpolateZoom(p0, p1) { - var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], - ux1 = p1[0], uy1 = p1[1], w1 = p1[2], - dx = ux1 - ux0, - dy = uy1 - uy0, - d2 = dx * dx + dy * dy, - i, - S; - - // Special case for u0 ≅ u1. - if (d2 < epsilon2) { - S = Math.log(w1 / w0) / rho; - i = function(t) { - return [ - ux0 + t * dx, - uy0 + t * dy, - w0 * Math.exp(rho * t * S) - ]; - }; - } - - // General case. - else { - var d1 = Math.sqrt(d2), - b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), - b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), - r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), - r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); - S = (r1 - r0) / rho; - i = function(t) { - var s = t * S, - coshr0 = cosh(r0), - u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); - return [ - ux0 + u * dx, - uy0 + u * dy, - w0 * coshr0 / cosh(rho * s + r0) - ]; - }; - } - - i.duration = S * 1000; - - return i; -} - -var frame = 0, // is an animation frame pending? - timeout = 0, // is a timeout pending? - interval = 0, // are any timers active? - pokeDelay = 1000, // how frequently we check for clock skew - taskHead, - taskTail, - clockLast = 0, - clockNow = 0, - clockSkew = 0, - clock = typeof performance === "object" && performance.now ? performance : Date, - setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; - -function now() { - return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); -} - -function clearNow() { - clockNow = 0; -} - -function Timer() { - this._call = - this._time = - this._next = null; -} - -Timer.prototype = timer.prototype = { - constructor: Timer, - restart: function(callback, delay, time) { - if (typeof callback !== "function") throw new TypeError("callback is not a function"); - time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); - if (!this._next && taskTail !== this) { - if (taskTail) taskTail._next = this; - else taskHead = this; - taskTail = this; - } - this._call = callback; - this._time = time; - sleep(); - }, - stop: function() { - if (this._call) { - this._call = null; - this._time = Infinity; - sleep(); - } - } -}; - -function timer(callback, delay, time) { - var t = new Timer; - t.restart(callback, delay, time); - return t; -} - -function timerFlush() { - now(); // Get the current time, if not already set. - ++frame; // Pretend we’ve set an alarm, if we haven’t already. - var t = taskHead, e; - while (t) { - if ((e = clockNow - t._time) >= 0) t._call.call(null, e); - t = t._next; - } - --frame; -} - -function wake() { - clockNow = (clockLast = clock.now()) + clockSkew; - frame = timeout = 0; - try { - timerFlush(); - } finally { - frame = 0; - nap(); - clockNow = 0; - } -} - -function poke() { - var now = clock.now(), delay = now - clockLast; - if (delay > pokeDelay) clockSkew -= delay, clockLast = now; -} - -function nap() { - var t0, t1 = taskHead, t2, time = Infinity; - while (t1) { - if (t1._call) { - if (time > t1._time) time = t1._time; - t0 = t1, t1 = t1._next; - } else { - t2 = t1._next, t1._next = null; - t1 = t0 ? t0._next = t2 : taskHead = t2; - } - } - taskTail = t0; - sleep(time); -} - -function sleep(time) { - if (frame) return; // Soonest alarm already set, or will be. - if (timeout) timeout = clearTimeout(timeout); - var delay = time - clockNow; // Strictly less than if we recomputed clockNow. - if (delay > 24) { - if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew); - if (interval) interval = clearInterval(interval); - } else { - if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); - frame = 1, setFrame(wake); - } -} - -function timeout$1(callback, delay, time) { - var t = new Timer; - delay = delay == null ? 0 : +delay; - t.restart(function(elapsed) { - t.stop(); - callback(elapsed + delay); - }, delay, time); - return t; -} - -var emptyOn = dispatch("start", "end", "cancel", "interrupt"); -var emptyTween = []; - -var CREATED = 0; -var SCHEDULED = 1; -var STARTING = 2; -var STARTED = 3; -var RUNNING = 4; -var ENDING = 5; -var ENDED = 6; - -function schedule(node, name, id, index, group, timing) { - var schedules = node.__transition; - if (!schedules) node.__transition = {}; - else if (id in schedules) return; - create(node, id, { - name: name, - index: index, // For context during callback. - group: group, // For context during callback. - on: emptyOn, - tween: emptyTween, - time: timing.time, - delay: timing.delay, - duration: timing.duration, - ease: timing.ease, - timer: null, - state: CREATED - }); -} - -function init(node, id) { - var schedule = get$4(node, id); - if (schedule.state > CREATED) throw new Error("too late; already scheduled"); - return schedule; -} - -function set$4(node, id) { - var schedule = get$4(node, id); - if (schedule.state > STARTED) throw new Error("too late; already running"); - return schedule; -} - -function get$4(node, id) { - var schedule = node.__transition; - if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found"); - return schedule; -} - -function create(node, id, self) { - var schedules = node.__transition, - tween; - - // Initialize the self timer when the transition is created. - // Note the actual delay is not known until the first callback! - schedules[id] = self; - self.timer = timer(schedule, 0, self.time); - - function schedule(elapsed) { - self.state = SCHEDULED; - self.timer.restart(start, self.delay, self.time); - - // If the elapsed delay is less than our first sleep, start immediately. - if (self.delay <= elapsed) start(elapsed - self.delay); - } - - function start(elapsed) { - var i, j, n, o; - - // If the state is not SCHEDULED, then we previously errored on start. - if (self.state !== SCHEDULED) return stop(); - - for (i in schedules) { - o = schedules[i]; - if (o.name !== self.name) continue; - - // While this element already has a starting transition during this frame, - // defer starting an interrupting transition until that transition has a - // chance to tick (and possibly end); see d3/d3-transition#54! - if (o.state === STARTED) return timeout$1(start); - - // Interrupt the active transition, if any. - if (o.state === RUNNING) { - o.state = ENDED; - o.timer.stop(); - o.on.call("interrupt", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - - // Cancel any pre-empted transitions. - else if (+i < id) { - o.state = ENDED; - o.timer.stop(); - o.on.call("cancel", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - } - - // Defer the first tick to end of the current frame; see d3/d3#1576. - // Note the transition may be canceled after start and before the first tick! - // Note this must be scheduled before the start event; see d3/d3-transition#16! - // Assuming this is successful, subsequent callbacks go straight to tick. - timeout$1(function() { - if (self.state === STARTED) { - self.state = RUNNING; - self.timer.restart(tick, self.delay, self.time); - tick(elapsed); - } - }); - - // Dispatch the start event. - // Note this must be done before the tween are initialized. - self.state = STARTING; - self.on.call("start", node, node.__data__, self.index, self.group); - if (self.state !== STARTING) return; // interrupted - self.state = STARTED; - - // Initialize the tween, deleting null tween. - tween = new Array(n = self.tween.length); - for (i = 0, j = -1; i < n; ++i) { - if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) { - tween[++j] = o; - } - } - tween.length = j + 1; - } - - function tick(elapsed) { - var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), - i = -1, - n = tween.length; - - while (++i < n) { - tween[i].call(node, t); - } - - // Dispatch the end event. - if (self.state === ENDING) { - self.on.call("end", node, node.__data__, self.index, self.group); - stop(); - } - } - - function stop() { - self.state = ENDED; - self.timer.stop(); - delete schedules[id]; - for (var i in schedules) return; // eslint-disable-line no-unused-vars - delete node.__transition; - } -} - -function interrupt(node, name) { - var schedules = node.__transition, - schedule, - active, - empty = true, - i; - - if (!schedules) return; - - name = name == null ? null : name + ""; - - for (i in schedules) { - if ((schedule = schedules[i]).name !== name) { empty = false; continue; } - active = schedule.state > STARTING && schedule.state < ENDING; - schedule.state = ENDED; - schedule.timer.stop(); - schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group); - delete schedules[i]; - } - - if (empty) delete node.__transition; -} - -function selection_interrupt(name) { - return this.each(function() { - interrupt(this, name); - }); -} - -function tweenRemove(id, name) { - var tween0, tween1; - return function() { - var schedule = set$4(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = tween0 = tween; - for (var i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1 = tween1.slice(); - tween1.splice(i, 1); - break; - } - } - } - - schedule.tween = tween1; - }; -} - -function tweenFunction(id, name, value) { - var tween0, tween1; - if (typeof value !== "function") throw new Error; - return function() { - var schedule = set$4(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = (tween0 = tween).slice(); - for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1[i] = t; - break; - } - } - if (i === n) tween1.push(t); - } - - schedule.tween = tween1; - }; -} - -function transition_tween(name, value) { - var id = this._id; - - name += ""; - - if (arguments.length < 2) { - var tween = get$4(this.node(), id).tween; - for (var i = 0, n = tween.length, t; i < n; ++i) { - if ((t = tween[i]).name === name) { - return t.value; - } - } - return null; - } - - return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value)); -} - -function tweenValue(transition, name, value) { - var id = transition._id; - - transition.each(function() { - var schedule = set$4(this, id); - (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments); - }); - - return function(node) { - return get$4(node, id).value[name]; - }; -} - -function interpolate(a, b) { - var c; - return (typeof b === "number" ? interpolateNumber - : b instanceof color ? interpolateRgb - : (c = color(b)) ? (b = c, interpolateRgb) - : interpolateString)(a, b); -} - -function attrRemove$1(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS$1(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant$1(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttribute(name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrConstantNS$1(fullname, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttributeNS(fullname.space, fullname.local); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrFunction$1(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttribute(name); - string0 = this.getAttribute(name); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function attrFunctionNS$1(fullname, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local); - string0 = this.getAttributeNS(fullname.space, fullname.local); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function transition_attr(name, value) { - var fullname = namespace(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate; - return this.attrTween(name, typeof value === "function" - ? (fullname.local ? attrFunctionNS$1 : attrFunction$1)(fullname, i, tweenValue(this, "attr." + name, value)) - : value == null ? (fullname.local ? attrRemoveNS$1 : attrRemove$1)(fullname) - : (fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, i, value)); -} - -function attrInterpolate(name, i) { - return function(t) { - this.setAttribute(name, i(t)); - }; -} - -function attrInterpolateNS(fullname, i) { - return function(t) { - this.setAttributeNS(fullname.space, fullname.local, i(t)); - }; -} - -function attrTweenNS(fullname, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i); - return t0; - } - tween._value = value; - return tween; -} - -function attrTween(name, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i); - return t0; - } - tween._value = value; - return tween; -} - -function transition_attrTween(name, value) { - var key = "attr." + name; - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - var fullname = namespace(name); - return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); -} - -function delayFunction(id, value) { - return function() { - init(this, id).delay = +value.apply(this, arguments); - }; -} - -function delayConstant(id, value) { - return value = +value, function() { - init(this, id).delay = value; - }; -} - -function transition_delay(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? delayFunction - : delayConstant)(id, value)) - : get$4(this.node(), id).delay; -} - -function durationFunction(id, value) { - return function() { - set$4(this, id).duration = +value.apply(this, arguments); - }; -} - -function durationConstant(id, value) { - return value = +value, function() { - set$4(this, id).duration = value; - }; -} - -function transition_duration(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? durationFunction - : durationConstant)(id, value)) - : get$4(this.node(), id).duration; -} - -function easeConstant(id, value) { - if (typeof value !== "function") throw new Error; - return function() { - set$4(this, id).ease = value; - }; -} - -function transition_ease(value) { - var id = this._id; - - return arguments.length - ? this.each(easeConstant(id, value)) - : get$4(this.node(), id).ease; -} - -function transition_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Transition(subgroups, this._parents, this._name, this._id); -} - -function transition_merge(transition) { - if (transition._id !== this._id) throw new Error; - - 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) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Transition(merges, this._parents, this._name, this._id); -} - -function start(name) { - return (name + "").trim().split(/^|\s+/).every(function(t) { - var i = t.indexOf("."); - if (i >= 0) t = t.slice(0, i); - return !t || t === "start"; - }); -} - -function onFunction(id, name, listener) { - var on0, on1, sit = start(name) ? init : set$4; - return function() { - var schedule = sit(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener); - - schedule.on = on1; - }; -} - -function transition_on(name, listener) { - var id = this._id; - - return arguments.length < 2 - ? get$4(this.node(), id).on.on(name) - : this.each(onFunction(id, name, listener)); -} - -function removeFunction(id) { - return function() { - var parent = this.parentNode; - for (var i in this.__transition) if (+i !== id) return; - if (parent) parent.removeChild(this); - }; -} - -function transition_remove() { - return this.on("end.remove", removeFunction(this._id)); -} - -function transition_select(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - schedule(subgroup[i], name, id, i, subgroup, get$4(node, id)); - } - } - } - - return new Transition(subgroups, this._parents, name, id); -} - -function transition_selectAll(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - for (var children = select.call(node, node.__data__, i, group), child, inherit = get$4(node, id), k = 0, l = children.length; k < l; ++k) { - if (child = children[k]) { - schedule(child, name, id, k, children, inherit); - } - } - subgroups.push(children); - parents.push(node); - } - } - } - - return new Transition(subgroups, parents, name, id); -} - -var Selection$1 = selection.prototype.constructor; - -function transition_selection() { - return new Selection$1(this._groups, this._parents); -} - -function styleNull(name, interpolate) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - string1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, string10 = string1); - }; -} - -function styleRemove$1(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant$1(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = styleValue(this, name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function styleFunction$1(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - value1 = value(this), - string1 = value1 + ""; - if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function styleMaybeRemove(id, name) { - var on0, on1, listener0, key = "style." + name, event = "end." + key, remove; - return function() { - var schedule = set$4(this, id), - on = schedule.on, - listener = schedule.value[key] == null ? remove || (remove = styleRemove$1(name)) : undefined; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener); - - schedule.on = on1; - }; -} - -function transition_style(name, value, priority) { - var i = (name += "") === "transform" ? interpolateTransformCss : interpolate; - return value == null ? this - .styleTween(name, styleNull(name, i)) - .on("end.style." + name, styleRemove$1(name)) - : typeof value === "function" ? this - .styleTween(name, styleFunction$1(name, i, tweenValue(this, "style." + name, value))) - .each(styleMaybeRemove(this._id, name)) - : this - .styleTween(name, styleConstant$1(name, i, value), priority) - .on("end.style." + name, null); -} - -function styleInterpolate(name, i, priority) { - return function(t) { - this.style.setProperty(name, i(t), priority); - }; -} - -function styleTween(name, value, priority) { - var t, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority); - return t; - } - tween._value = value; - return tween; -} - -function transition_styleTween(name, value, priority) { - var key = "style." + (name += ""); - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); -} - -function textConstant$1(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction$1(value) { - return function() { - var value1 = value(this); - this.textContent = value1 == null ? "" : value1; - }; -} - -function transition_text(value) { - return this.tween("text", typeof value === "function" - ? textFunction$1(tweenValue(this, "text", value)) - : textConstant$1(value == null ? "" : value + "")); -} - -function transition_transition() { - var name = this._name, - id0 = this._id, - id1 = newId(); - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - var inherit = get$4(node, id0); - schedule(node, name, id1, i, group, { - time: inherit.time + inherit.delay + inherit.duration, - delay: 0, - duration: inherit.duration, - ease: inherit.ease - }); - } - } - } - - return new Transition(groups, this._parents, name, id1); -} - -function transition_end() { - var on0, on1, that = this, id = that._id, size = that.size(); - return new Promise(function(resolve, reject) { - var cancel = {value: reject}, - end = {value: function() { if (--size === 0) resolve(); }}; - - that.each(function() { - var schedule = set$4(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) { - on1 = (on0 = on).copy(); - on1._.cancel.push(cancel); - on1._.interrupt.push(cancel); - on1._.end.push(end); - } - - schedule.on = on1; - }); - }); -} - -var id = 0; - -function Transition(groups, parents, name, id) { - this._groups = groups; - this._parents = parents; - this._name = name; - this._id = id; -} - -function transition(name) { - return selection().transition(name); -} - -function newId() { - return ++id; -} - -var selection_prototype = selection.prototype; - -Transition.prototype = transition.prototype = { - constructor: Transition, - select: transition_select, - selectAll: transition_selectAll, - filter: transition_filter, - merge: transition_merge, - selection: transition_selection, - transition: transition_transition, - call: selection_prototype.call, - nodes: selection_prototype.nodes, - node: selection_prototype.node, - size: selection_prototype.size, - empty: selection_prototype.empty, - each: selection_prototype.each, - on: transition_on, - attr: transition_attr, - attrTween: transition_attrTween, - style: transition_style, - styleTween: transition_styleTween, - text: transition_text, - remove: transition_remove, - tween: transition_tween, - delay: transition_delay, - duration: transition_duration, - ease: transition_ease, - end: transition_end -}; - -function cubicInOut(t) { - return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; -} - -var defaultTiming = { - time: null, // Set on use. - delay: 0, - duration: 250, - ease: cubicInOut -}; - -function inherit(node, id) { - var timing; - while (!(timing = node.__transition) || !(timing = timing[id])) { - if (!(node = node.parentNode)) { - return defaultTiming.time = now(), defaultTiming; - } - } - return timing; -} - -function selection_transition(name) { - var id, - timing; - - if (name instanceof Transition) { - id = name._id, name = name._name; - } else { - id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + ""; - } - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - schedule(node, name, id, i, group, timing || inherit(node, id)); - } - } - } - - return new Transition(groups, this._parents, name, id); -} - -selection.prototype.interrupt = selection_interrupt; -selection.prototype.transition = selection_transition; - -function constant$2(x) { - return function() { - return x; - }; -} - -function ZoomEvent(target, type, transform) { - this.target = target; - this.type = type; - this.transform = transform; -} - -function Transform(k, x, y) { - this.k = k; - this.x = x; - this.y = y; -} - -Transform.prototype = { - constructor: Transform, - scale: function(k) { - return k === 1 ? this : new Transform(this.k * k, this.x, this.y); - }, - translate: function(x, y) { - return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y); - }, - apply: function(point) { - return [point[0] * this.k + this.x, point[1] * this.k + this.y]; - }, - applyX: function(x) { - return x * this.k + this.x; - }, - applyY: function(y) { - return y * this.k + this.y; - }, - invert: function(location) { - return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; - }, - invertX: function(x) { - return (x - this.x) / this.k; - }, - invertY: function(y) { - return (y - this.y) / this.k; - }, - rescaleX: function(x) { - return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x)); - }, - rescaleY: function(y) { - return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y)); - }, - toString: function() { - return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; - } -}; - -var identity$1 = new Transform(1, 0, 0); - -function nopropagation() { - event.stopImmediatePropagation(); -} - -function noevent$1() { - event.preventDefault(); - event.stopImmediatePropagation(); -} - -// Ignore right-click, since that should open the context menu. -function defaultFilter() { - return !event.ctrlKey && !event.button; -} - -function defaultExtent() { - var e = this; - if (e instanceof SVGElement) { - e = e.ownerSVGElement || e; - if (e.hasAttribute("viewBox")) { - e = e.viewBox.baseVal; - return [[e.x, e.y], [e.x + e.width, e.y + e.height]]; - } - return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]]; - } - return [[0, 0], [e.clientWidth, e.clientHeight]]; -} - -function defaultTransform() { - return this.__zoom || identity$1; -} - -function defaultWheelDelta() { - return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002); -} - -function defaultTouchable() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -function defaultConstrain(transform, extent, translateExtent) { - var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], - dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], - dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], - dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1]; - return transform.translate( - dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), - dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) - ); -} - -function zoom() { - var filter = defaultFilter, - extent = defaultExtent, - constrain = defaultConstrain, - wheelDelta = defaultWheelDelta, - touchable = defaultTouchable, - scaleExtent = [0, Infinity], - translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], - duration = 250, - interpolate = interpolateZoom, - listeners = dispatch("start", "zoom", "end"), - touchstarting, - touchending, - touchDelay = 500, - wheelDelay = 150, - clickDistance2 = 0; - - function zoom(selection) { - selection - .property("__zoom", defaultTransform) - .on("wheel.zoom", wheeled) - .on("mousedown.zoom", mousedowned) - .on("dblclick.zoom", dblclicked) - .filter(touchable) - .on("touchstart.zoom", touchstarted) - .on("touchmove.zoom", touchmoved) - .on("touchend.zoom touchcancel.zoom", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - zoom.transform = function(collection, transform, point) { - var selection = collection.selection ? collection.selection() : collection; - selection.property("__zoom", defaultTransform); - if (collection !== selection) { - schedule(collection, transform, point); - } else { - selection.interrupt().each(function() { - gesture(this, arguments) - .start() - .zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform) - .end(); - }); - } - }; - - zoom.scaleBy = function(selection, k, p) { - zoom.scaleTo(selection, function() { - var k0 = this.__zoom.k, - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return k0 * k1; - }, p); - }; - - zoom.scaleTo = function(selection, k, p) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t0 = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p, - p1 = t0.invert(p0), - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent); - }, p); - }; - - zoom.translateBy = function(selection, x, y) { - zoom.transform(selection, function() { - return constrain(this.__zoom.translate( - typeof x === "function" ? x.apply(this, arguments) : x, - typeof y === "function" ? y.apply(this, arguments) : y - ), extent.apply(this, arguments), translateExtent); - }); - }; - - zoom.translateTo = function(selection, x, y, p) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p; - return constrain(identity$1.translate(p0[0], p0[1]).scale(t.k).translate( - typeof x === "function" ? -x.apply(this, arguments) : -x, - typeof y === "function" ? -y.apply(this, arguments) : -y - ), e, translateExtent); - }, p); - }; - - function scale(transform, k) { - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k)); - return k === transform.k ? transform : new Transform(k, transform.x, transform.y); - } - - function translate(transform, p0, p1) { - var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k; - return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y); - } - - function centroid(extent) { - return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2]; - } - - function schedule(transition, transform, point) { - transition - .on("start.zoom", function() { gesture(this, arguments).start(); }) - .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); }) - .tween("zoom", function() { - var that = this, - args = arguments, - g = gesture(that, args), - e = extent.apply(that, args), - p = point == null ? centroid(e) : typeof point === "function" ? point.apply(that, args) : point, - w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), - a = that.__zoom, - b = typeof transform === "function" ? transform.apply(that, args) : transform, - i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k)); - return function(t) { - if (t === 1) t = b; // Avoid rounding error on end. - else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); } - g.zoom(null, t); - }; - }); - } - - function gesture(that, args, clean) { - return (!clean && that.__zooming) || new Gesture(that, args); - } - - function Gesture(that, args) { - this.that = that; - this.args = args; - this.active = 0; - this.extent = extent.apply(that, args); - this.taps = 0; - } - - Gesture.prototype = { - start: function() { - if (++this.active === 1) { - this.that.__zooming = this; - this.emit("start"); - } - return this; - }, - zoom: function(key, transform) { - if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]); - if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]); - if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]); - this.that.__zoom = transform; - this.emit("zoom"); - return this; - }, - end: function() { - if (--this.active === 0) { - delete this.that.__zooming; - this.emit("end"); - } - return this; - }, - emit: function(type) { - customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]); - } - }; - - function wheeled() { - if (!filter.apply(this, arguments)) return; - var g = gesture(this, arguments), - t = this.__zoom, - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), - p = mouse(this); - - // If the mouse is in the same location as before, reuse it. - // If there were recent wheel events, reset the wheel idle timeout. - if (g.wheel) { - if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) { - g.mouse[1] = t.invert(g.mouse[0] = p); - } - clearTimeout(g.wheel); - } - - // If this wheel event won’t trigger a transform change, ignore it. - else if (t.k === k) return; - - // Otherwise, capture the mouse point and location at the start. - else { - g.mouse = [p, t.invert(p)]; - interrupt(this); - g.start(); - } - - noevent$1(); - g.wheel = setTimeout(wheelidled, wheelDelay); - g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent)); - - function wheelidled() { - g.wheel = null; - g.end(); - } - } - - function mousedowned() { - if (touchending || !filter.apply(this, arguments)) return; - var g = gesture(this, arguments, true), - v = select(event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), - p = mouse(this), - x0 = event.clientX, - y0 = event.clientY; - - dragDisable(event.view); - nopropagation(); - g.mouse = [p, this.__zoom.invert(p)]; - interrupt(this); - g.start(); - - function mousemoved() { - noevent$1(); - if (!g.moved) { - var dx = event.clientX - x0, dy = event.clientY - y0; - g.moved = dx * dx + dy * dy > clickDistance2; - } - g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent)); - } - - function mouseupped() { - v.on("mousemove.zoom mouseup.zoom", null); - yesdrag(event.view, g.moved); - noevent$1(); - g.end(); - } - } - - function dblclicked() { - if (!filter.apply(this, arguments)) return; - var t0 = this.__zoom, - p0 = mouse(this), - p1 = t0.invert(p0), - k1 = t0.k * (event.shiftKey ? 0.5 : 2), - t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent); - - noevent$1(); - if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0); - else select(this).call(zoom.transform, t1); - } - - function touchstarted() { - if (!filter.apply(this, arguments)) return; - var touches = event.touches, - n = touches.length, - g = gesture(this, arguments, event.changedTouches.length === n), - started, i, t, p; - - nopropagation(); - for (i = 0; i < n; ++i) { - t = touches[i], p = touch(this, touches, t.identifier); - p = [p, this.__zoom.invert(p), t.identifier]; - if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting; - else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0; - } - - if (touchstarting) touchstarting = clearTimeout(touchstarting); - - if (started) { - if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay); - interrupt(this); - g.start(); - } - } - - function touchmoved() { - if (!this.__zooming) return; - var g = gesture(this, arguments), - touches = event.changedTouches, - n = touches.length, i, t, p, l; - - noevent$1(); - if (touchstarting) touchstarting = clearTimeout(touchstarting); - g.taps = 0; - for (i = 0; i < n; ++i) { - t = touches[i], p = touch(this, touches, t.identifier); - if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p; - else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p; - } - t = g.that.__zoom; - if (g.touch1) { - var p0 = g.touch0[0], l0 = g.touch0[1], - p1 = g.touch1[0], l1 = g.touch1[1], - dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, - dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl; - t = scale(t, Math.sqrt(dp / dl)); - p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; - l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; - } - else if (g.touch0) p = g.touch0[0], l = g.touch0[1]; - else return; - g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent)); - } - - function touchended() { - if (!this.__zooming) return; - var g = gesture(this, arguments), - touches = event.changedTouches, - n = touches.length, i, t; - - nopropagation(); - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, touchDelay); - for (i = 0; i < n; ++i) { - t = touches[i]; - if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0; - else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1; - } - if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1; - if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]); - else { - g.end(); - // If this was a dbltap, reroute to the (optional) dblclick.zoom handler. - if (g.taps === 2) { - var p = select(this).on("dblclick.zoom"); - if (p) p.apply(this, arguments); - } - } - } - - zoom.wheelDelta = function(_) { - return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant$2(+_), zoom) : wheelDelta; - }; - - zoom.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$2(!!_), zoom) : filter; - }; - - zoom.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$2(!!_), zoom) : touchable; - }; - - zoom.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant$2([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent; - }; - - zoom.scaleExtent = function(_) { - return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]]; - }; - - zoom.translateExtent = function(_) { - 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]]]; - }; - - zoom.constrain = function(_) { - return arguments.length ? (constrain = _, zoom) : constrain; - }; - - zoom.duration = function(_) { - return arguments.length ? (duration = +_, zoom) : duration; - }; - - zoom.interpolate = function(_) { - return arguments.length ? (interpolate = _, zoom) : interpolate; - }; - - zoom.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? zoom : value; - }; - - zoom.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2); - }; - - return zoom; -} - -// do not edit .js files directly - edit src/index.jst - - - -var fastDeepEqual = function equal(a, b) { - if (a === b) return true; - - if (a && b && typeof a == 'object' && typeof b == 'object') { - if (a.constructor !== b.constructor) return false; - - var length, i, keys; - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (!equal(a[i], b[i])) return false; - return true; - } - - - - if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; - if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); - if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); - - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) return false; - - for (i = length; i-- !== 0;) - if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; - - for (i = length; i-- !== 0;) { - var key = keys[i]; - - if (!equal(a[key], b[key])) return false; - } - - return true; - } - - // true if both NaN, false otherwise - return a!==a && b!==b; -}; - -var isInputDOMNode = function (e) { - var target = e.target; - return e && target && ['INPUT', 'SELECT', 'TEXTAREA', 'BUTTON'].includes(target.nodeName); -}; -var getDimensions = function (node) { return ({ - width: node.offsetWidth, - height: node.offsetHeight, -}); }; - -var getHandleBounds = function (selector, nodeElement, parentBounds, k) { - var handles = nodeElement.querySelectorAll(selector); - if (!handles || !handles.length) { - return null; - } - var handlesArray = Array.from(handles); - return handlesArray.map(function (handle) { - var bounds = handle.getBoundingClientRect(); - var dimensions = getDimensions(handle); - var nodeIdAttr = handle.getAttribute('data-nodeid'); - var handlePosition = handle.getAttribute('data-handlepos'); - var nodeIdSplitted = nodeIdAttr ? nodeIdAttr.split('__') : null; - var handleId = null; - if (nodeIdSplitted) { - handleId = (nodeIdSplitted.length ? nodeIdSplitted[1] : nodeIdSplitted); - } - return __assign({ id: handleId, position: handlePosition, x: (bounds.left - parentBounds.left) * (1 / k), y: (bounds.top - parentBounds.top) * (1 / k) }, dimensions); - }); -}; - -var storeModel = { - 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: false, - nodesSelectionActive: false, - selectionActive: false, - selection: null, - userSelectionRect: { - startX: 0, - startY: 0, - x: 0, - y: 0, - width: 0, - height: 0, - draw: false, - }, - connectionSourceId: null, - connectionPosition: { x: 0, y: 0 }, - snapGrid: [16, 16], - snapToGrid: false, - isInteractive: true, - onConnect: function () { }, - setOnConnect: action(function (state, onConnect) { - state.onConnect = onConnect; - }), - setNodes: action(function (state, nodes) { - state.nodes = nodes; - }), - setEdges: action(function (state, edges) { - state.edges = edges; - }), - updateNodeDimensions: action(function (state, _a) { - var id = _a.id, nodeElement = _a.nodeElement; - var bounds = nodeElement.getBoundingClientRect(); - var dimensions = getDimensions(nodeElement); - var matchingNode = state.nodes.find(function (n) { return n.id === id; }); - // only update when size change - if (!matchingNode || - (matchingNode.__rg.width === dimensions.width && matchingNode.__rg.height === dimensions.height)) { - return; - } - var handleBounds = { - source: getHandleBounds('.source', nodeElement, bounds, state.transform[2]), - target: getHandleBounds('.target', nodeElement, bounds, state.transform[2]), - }; - state.nodes.forEach(function (n) { - if (n.id === id) { - n.__rg = __assign(__assign(__assign({}, n.__rg), dimensions), { handleBounds: handleBounds }); - } - }); - }), - updateNodePos: action(function (state, _a) { - var id = _a.id, pos = _a.pos; - var position = pos; - if (state.snapToGrid) { - var transformedGridSizeX = state.snapGrid[0] * state.transform[2]; - var transformedGridSizeY = state.snapGrid[1] * state.transform[2]; - position = { - x: transformedGridSizeX * Math.round(pos.x / transformedGridSizeX), - y: transformedGridSizeY * Math.round(pos.y / transformedGridSizeY), - }; - } - state.nodes.forEach(function (n) { - if (n.id === id) { - n.__rg = __assign(__assign({}, n.__rg), { position: position }); - } - }); - }), - setUserSelection: action(function (state, mousePos) { - state.userSelectionRect = { - width: 0, - height: 0, - startX: mousePos.x, - startY: mousePos.y, - x: mousePos.x, - y: mousePos.y, - draw: true, - }; - state.selectionActive = true; - }), - updateUserSelection: action(function (state, mousePos) { - var startX = state.userSelectionRect.startX || 0; - var startY = state.userSelectionRect.startY || 0; - var negativeX = mousePos.x < startX; - var negativeY = mousePos.y < startY; - var nextRect = __assign(__assign({}, state.userSelectionRect), { x: negativeX ? mousePos.x : state.userSelectionRect.x, y: negativeY ? mousePos.y : state.userSelectionRect.y, width: negativeX ? startX - mousePos.x : mousePos.x - startX, height: negativeY ? startY - mousePos.y : mousePos.y - startY }); - var selectedNodes = getNodesInside(state.nodes, nextRect, state.transform); - var selectedEdges = getConnectedEdges(selectedNodes, state.edges); - var nextSelectedElements = __spreadArrays(selectedNodes, selectedEdges); - var selectedElementsUpdated = !fastDeepEqual(nextSelectedElements, state.selectedElements); - state.selection = nextRect; - state.selectedElements = selectedElementsUpdated ? nextSelectedElements : state.selectedElements; - state.userSelectionRect = nextRect; - }), - unsetUserSelection: action(function (state) { - var selectedNodes = getNodesInside(state.nodes, state.userSelectionRect, state.transform); - if (!selectedNodes.length) { - state.selectionActive = false; - state.userSelectionRect = __assign(__assign({}, state.userSelectionRect), { draw: false }); - state.nodesSelectionActive = false; - state.selectedElements = []; - return; - } - var selectedNodesBbox = getRectOfNodes(selectedNodes); - state.selection = state.userSelectionRect; - state.nodesSelectionActive = true; - state.selectedNodesBbox = selectedNodesBbox; - state.userSelectionRect = __assign(__assign({}, state.userSelectionRect), { draw: false }); - state.selectionActive = false; - }), - setSelection: action(function (state, isActive) { - state.selectionActive = isActive; - }), - setNodesSelection: action(function (state, _a) { - var isActive = _a.isActive, selection = _a.selection; - if (!isActive || typeof selection === 'undefined') { - state.nodesSelectionActive = false; - state.selectedElements = []; - return; - } - var selectedNodes = getNodesInside(state.nodes, selection, state.transform); - if (!selectedNodes.length) { - state.nodesSelectionActive = false; - state.selectedElements = []; - return; - } - var selectedNodesBbox = getRectOfNodes(selectedNodes); - state.selection = selection; - state.nodesSelectionActive = true; - state.selectedNodesBbox = selectedNodesBbox; - }), - setSelectedElements: action(function (state, elements) { - var selectedElementsArr = Array.isArray(elements) ? elements : [elements]; - var selectedElementsUpdated = !fastDeepEqual(selectedElementsArr, state.selectedElements); - var selectedElements = selectedElementsUpdated ? selectedElementsArr : state.selectedElements; - state.selectedElements = selectedElements; - }), - updateSelection: action(function (state, selection) { - var selectedNodes = getNodesInside(state.nodes, selection, state.transform); - var selectedEdges = getConnectedEdges(selectedNodes, state.edges); - var nextSelectedElements = __spreadArrays(selectedNodes, selectedEdges); - var selectedElementsUpdated = !fastDeepEqual(nextSelectedElements, state.selectedElements); - state.selection = selection; - state.selectedElements = selectedElementsUpdated ? nextSelectedElements : state.selectedElements; - }), - updateTransform: action(function (state, transform) { - state.transform = [transform.x, transform.y, transform.k]; - }), - updateSize: action(function (state, size) { - state.width = size.width; - state.height = size.height; - }), - initD3: action(function (state, _a) { - var zoom = _a.zoom, selection = _a.selection; - state.d3Zoom = zoom; - state.d3Selection = selection; - state.d3Initialised = true; - }), - setConnectionPosition: action(function (state, position) { - state.connectionPosition = position; - }), - setConnectionSourceId: action(function (state, sourceId) { - state.connectionSourceId = sourceId; - }), - setSnapGrid: action(function (state, _a) { - var snapToGrid = _a.snapToGrid, snapGrid = _a.snapGrid; - state.snapToGrid = snapToGrid; - state.snapGrid = snapGrid; - }), - setInteractive: action(function (state, isInteractive) { - state.isInteractive = isInteractive; - }), -}; -var store = createStore$1(storeModel); - -var isEdge = function (element) { - return element.hasOwnProperty('source') && element.hasOwnProperty('target'); -}; -var isNode = function (element) { - return !element.hasOwnProperty('source') && !element.hasOwnProperty('target'); -}; -var getOutgoers = function (node, elements) { - if (!isNode(node)) { - return []; - } - var outgoerIds = elements.filter(function (e) { return e.source === node.id; }).map(function (e) { return e.target; }); - return elements.filter(function (e) { return outgoerIds.includes(e.id); }); -}; -var removeElements = function (elementsToRemove, elements) { - var nodeIdsToRemove = elementsToRemove.map(function (n) { return n.id; }); - return elements.filter(function (element) { - var edgeElement = element; - return !(nodeIdsToRemove.includes(element.id) || - nodeIdsToRemove.includes(edgeElement.target) || - nodeIdsToRemove.includes(edgeElement.source)); - }); -}; -var getEdgeId = function (_a) { - var source = _a.source, target = _a.target; - return "reactflow__edge-" + source + "-" + target; -}; -var addEdge = function (edgeParams, elements) { - if (!edgeParams.source || !edgeParams.target) { - throw new Error('Can not create edge. An edge needs a source and a target'); - } - return elements.concat(__assign(__assign({}, edgeParams), { id: typeof edgeParams.id !== 'undefined' ? edgeParams.id : getEdgeId(edgeParams) })); -}; -var pointToRendererPoint = function (_a, _b, snapToGrid, _c) { - var x = _a.x, y = _a.y; - var tx = _b[0], ty = _b[1], tScale = _b[2]; - var snapX = _c[0], snapY = _c[1]; - var position = { - x: (x - tx) / tScale, - y: (y - ty) / tScale, - }; - if (snapToGrid) { - var transformedGridSizeX = snapX * tScale; - var transformedGridSizeY = snapY * tScale; - return { - x: transformedGridSizeX * Math.round(position.x / transformedGridSizeX), - y: transformedGridSizeY * Math.round(position.y / transformedGridSizeY), - }; - } - return position; -}; -var parseElement = function (element, transform, snapToGrid, snapGrid) { - if (!element.id) { - throw new Error('All elements (nodes and edges) need to have an id.'); - } - if (isEdge(element)) { - return __assign(__assign({}, element), { id: element.id.toString(), type: element.type || 'default' }); - } - var nodeElement = element; - return __assign(__assign({}, nodeElement), { id: nodeElement.id.toString(), type: nodeElement.type || 'default', __rg: { - position: pointToRendererPoint(nodeElement.position, transform, snapToGrid, snapGrid), - width: null, - height: null, - handleBounds: {}, - } }); -}; -var getBoundsOfBoxes = function (box1, box2) { return ({ - x: Math.min(box1.x, box2.x), - y: Math.min(box1.y, box2.y), - x2: Math.max(box1.x2, box2.x2), - y2: Math.max(box1.y2, box2.y2), -}); }; -var rectToBox = function (_a) { - var x = _a.x, y = _a.y, width = _a.width, height = _a.height; - return ({ - x: x, - y: y, - x2: x + width, - y2: y + height, - }); -}; -var boxToRect = function (_a) { - var x = _a.x, y = _a.y, x2 = _a.x2, y2 = _a.y2; - return ({ - x: x, - y: y, - width: x2 - x, - height: y2 - y, - }); -}; -var getBoundsofRects = function (rect1, rect2) { - return boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2))); -}; -var getRectOfNodes = function (nodes) { - var box = nodes.reduce(function (currBox, _a) { - var _b = _a.__rg, position = _b.position, width = _b.width, height = _b.height; - return getBoundsOfBoxes(currBox, rectToBox(__assign(__assign({}, position), { width: width, height: height }))); - }, { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity }); - return boxToRect(box); -}; -var getNodesInside = function (nodes, rect, _a, partially) { - var _b = _a === void 0 ? [0, 0, 1] : _a, tx = _b[0], ty = _b[1], tScale = _b[2]; - if (partially === void 0) { partially = false; } - var rBox = rectToBox({ - x: (rect.x - tx) / tScale, - y: (rect.y - ty) / tScale, - width: rect.width / tScale, - height: rect.height / tScale, - }); - return nodes.filter(function (_a) { - var _b = _a.__rg, position = _b.position, width = _b.width, height = _b.height; - var nBox = rectToBox(__assign(__assign({}, position), { width: width, height: height })); - var xOverlap = Math.max(0, Math.min(rBox.x2, nBox.x2) - Math.max(rBox.x, nBox.x)); - var yOverlap = Math.max(0, Math.min(rBox.y2, nBox.y2) - Math.max(rBox.y, nBox.y)); - var overlappingArea = xOverlap * yOverlap; - if (partially) { - return overlappingArea >= 0; - } - var area = width * height; - return overlappingArea >= area; - }); -}; -var getConnectedEdges = function (nodes, edges) { - var nodeIds = nodes.map(function (n) { return n.id; }); - return edges.filter(function (e) { - var sourceId = e.source.split('__')[0]; - var targetId = e.target.split('__')[0]; - return nodeIds.includes(sourceId) || nodeIds.includes(targetId); - }); -}; -var fitView = function (_a) { - var padding = (_a === void 0 ? { padding: 0.1 } : _a).padding; - var _b = store.getState(), nodes = _b.nodes, width = _b.width, height = _b.height, d3Selection = _b.d3Selection, d3Zoom = _b.d3Zoom; - if (!d3Selection || !d3Zoom || !nodes.length) { - return; - } - var bounds = getRectOfNodes(nodes); - var maxBoundsSize = Math.max(bounds.width, bounds.height); - var k = Math.min(width, height) / (maxBoundsSize + maxBoundsSize * padding); - var boundsCenterX = bounds.x + bounds.width / 2; - var boundsCenterY = bounds.y + bounds.height / 2; - var transform = [width / 2 - boundsCenterX * k, height / 2 - boundsCenterY * k]; - var fittedTransform = identity$1.translate(transform[0], transform[1]).scale(k); - d3Selection.call(d3Zoom.transform, fittedTransform); -}; -var zoom$1 = function (amount) { - var _a = store.getState(), d3Zoom = _a.d3Zoom, d3Selection = _a.d3Selection, transform = _a.transform; - if (d3Zoom && d3Selection) { - d3Zoom.scaleTo(d3Selection, transform[2] + amount); - } -}; -var zoomIn = function () { return zoom$1(0.2); }; -var zoomOut = function () { return zoom$1(-0.2); }; - -function renderNode(node, props, transform, selectedElements, isInteractive) { - var nodeType = node.type || 'default'; - var NodeComponent = (props.nodeTypes[nodeType] || props.nodeTypes.default); - if (!props.nodeTypes[nodeType]) { - console.warn("No node type found for type \"" + nodeType + "\". Using fallback type \"default\"."); - } - var isSelected = selectedElements.some(function (_a) { - var id = _a.id; - return id === node.id; - }); - return (React__default.createElement(NodeComponent, { key: node.id, id: node.id, type: nodeType, data: node.data, xPos: node.__rg.position.x, yPos: node.__rg.position.y, onClick: props.onElementClick, onNodeDragStop: props.onNodeDragStop, transform: transform, selected: isSelected, style: node.style, isInteractive: isInteractive, sourcePosition: node.sourcePosition, targetPosition: node.targetPosition })); -} -var NodeRenderer = React.memo(function (_a) { - var _b = _a.onlyRenderVisibleNodes, onlyRenderVisibleNodes = _b === void 0 ? true : _b, props = __rest(_a, ["onlyRenderVisibleNodes"]); - var _c = useStoreState$1(function (s) { return ({ - nodes: s.nodes, - transform: s.transform, - selectedElements: s.selectedElements, - width: s.width, - height: s.height, - isInteractive: s.isInteractive, - }); }), nodes = _c.nodes, transform = _c.transform, selectedElements = _c.selectedElements, width = _c.width, height = _c.height, isInteractive = _c.isInteractive; - var tx = transform[0], ty = transform[1], tScale = transform[2]; - var transformStyle = { - transform: "translate(" + tx + "px," + ty + "px) scale(" + tScale + ")", - }; - var renderNodes = onlyRenderVisibleNodes - ? getNodesInside(nodes, { x: 0, y: 0, width: width, height: height }, transform, true) - : nodes; - return (React__default.createElement("div", { className: "react-flow__nodes", style: transformStyle }, renderNodes.map(function (node) { return renderNode(node, props, transform, selectedElements, isInteractive); }))); -}); -NodeRenderer.displayName = 'NodeRenderer'; - -var ConnectionLine = (function (_a) { - var connectionSourceId = _a.connectionSourceId, _b = _a.connectionLineStyle, connectionLineStyle = _b === void 0 ? {} : _b, connectionPositionX = _a.connectionPositionX, connectionPositionY = _a.connectionPositionY, connectionLineType = _a.connectionLineType, _c = _a.nodes, nodes = _c === void 0 ? [] : _c, className = _a.className, transform = _a.transform, isInteractive = _a.isInteractive; - var _d = React.useState(null), sourceNode = _d[0], setSourceNode = _d[1]; - var hasHandleId = connectionSourceId.includes('__'); - var sourceIdSplitted = connectionSourceId.split('__'); - var nodeId = sourceIdSplitted[0]; - var handleId = hasHandleId ? sourceIdSplitted[1] : null; - React.useEffect(function () { - var nextSourceNode = nodes.find(function (n) { return n.id === nodeId; }) || null; - setSourceNode(nextSourceNode); - }, []); - if (!sourceNode || !isInteractive) { - return null; - } - var edgeClasses = classnames('react-flow__edge', 'connection', className); - var hasSource = sourceNode.__rg.handleBounds.source !== null; - // output nodes don't have source handles so we need to use the target one - var handleKey = hasSource ? 'source' : 'target'; - var sourceHandle = handleId - ? sourceNode.__rg.handleBounds[handleKey].find(function (d) { return d.id === handleId; }) - : sourceNode.__rg.handleBounds[handleKey][0]; - var sourceHandleX = sourceHandle ? sourceHandle.x + sourceHandle.width / 2 : sourceNode.__rg.width / 2; - var sourceHandleY = sourceHandle ? sourceHandle.y + sourceHandle.height / 2 : sourceNode.__rg.height; - var sourceX = sourceNode.__rg.position.x + sourceHandleX; - var sourceY = sourceNode.__rg.position.y + sourceHandleY; - var targetX = (connectionPositionX - transform[0]) * (1 / transform[2]); - var targetY = (connectionPositionY - transform[1]) * (1 / transform[2]); - var dAttr = ''; - if (connectionLineType === 'bezier') { - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - dAttr = "M" + sourceX + "," + sourceY + " C" + sourceX + "," + centerY + " " + targetX + "," + centerY + " " + targetX + "," + targetY; - } - else { - dAttr = "M" + sourceX + "," + sourceY + " " + targetX + "," + targetY; - } - return (React__default.createElement("g", { className: edgeClasses }, - React__default.createElement("path", __assign({ d: dAttr }, connectionLineStyle)))); -}); - -var Position; -(function (Position) { - Position["Left"] = "left"; - Position["Top"] = "top"; - Position["Right"] = "right"; - Position["Bottom"] = "bottom"; -})(Position || (Position = {})); -var GridType; -(function (GridType) { - GridType["Lines"] = "lines"; - GridType["Dots"] = "dots"; -})(GridType || (GridType = {})); - -function getHandlePosition(position, node, handle) { - if (handle === void 0) { handle = null; } - if (!handle) { - switch (position) { - case Position.Top: - return { - x: node.__rg.width / 2, - y: 0, - }; - case Position.Right: - return { - x: node.__rg.width, - y: node.__rg.height / 2, - }; - case Position.Bottom: - return { - x: node.__rg.width / 2, - y: node.__rg.height, - }; - case Position.Left: - return { - x: 0, - y: node.__rg.height / 2, - }; - } - } - switch (position) { - case Position.Top: - return { - x: handle.x + handle.width / 2, - y: handle.y, - }; - case Position.Right: - return { - x: handle.x + handle.width, - y: handle.y + handle.height / 2, - }; - case Position.Bottom: - return { - x: handle.x + handle.width / 2, - y: handle.y + handle.height, - }; - case Position.Left: - return { - x: handle.x, - y: handle.y + handle.height / 2, - }; - } -} -function getHandle(bounds, handleId) { - var handle = null; - if (!bounds) { - return null; - } - // there is no handleId when there are no multiple handles/ handles with ids - // so we just pick the first one - if (bounds.length === 1 || !handleId) { - handle = bounds[0]; - } - else if (handleId) { - handle = bounds.find(function (d) { return d.id === handleId; }); - } - return handle; -} -function getEdgePositions(sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition) { - var sourceHandlePos = getHandlePosition(sourcePosition, sourceNode, sourceHandle); - var sourceX = sourceNode.__rg.position.x + sourceHandlePos.x; - var sourceY = sourceNode.__rg.position.y + sourceHandlePos.y; - var targetHandlePos = getHandlePosition(targetPosition, targetNode, targetHandle); - var targetX = targetNode.__rg.position.x + targetHandlePos.x; - var targetY = targetNode.__rg.position.y + targetHandlePos.y; - return { - sourceX: sourceX, - sourceY: sourceY, - targetX: targetX, - targetY: targetY, - }; -} -function renderEdge(edge, props, nodes, selectedElements, isInteractive) { - var _a = edge.source.split('__'), sourceId = _a[0], sourceHandleId = _a[1]; - var _b = edge.target.split('__'), targetId = _b[0], targetHandleId = _b[1]; - var sourceNode = nodes.find(function (n) { return n.id === sourceId; }); - var targetNode = nodes.find(function (n) { return n.id === targetId; }); - if (!sourceNode) { - throw new Error("couldn't create edge for source id: " + sourceId); - } - if (!targetNode) { - throw new Error("couldn't create edge for target id: " + targetId); - } - if (!sourceNode.__rg.width || !sourceNode.__rg.height) { - return null; - } - var edgeType = edge.type || 'default'; - var EdgeComponent = props.edgeTypes[edgeType] || props.edgeTypes.default; - var sourceHandle = getHandle(sourceNode.__rg.handleBounds.source, sourceHandleId); - var targetHandle = getHandle(targetNode.__rg.handleBounds.target, targetHandleId); - var sourcePosition = sourceHandle ? sourceHandle.position : Position.Bottom; - var targetPosition = targetHandle ? targetHandle.position : Position.Top; - var _c = getEdgePositions(sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition), sourceX = _c.sourceX, sourceY = _c.sourceY, targetX = _c.targetX, targetY = _c.targetY; - var isSelected = selectedElements.some(function (elm) { return isEdge(elm) && elm.source === sourceId && elm.target === targetId; }); - return (React__default.createElement(EdgeComponent, { key: edge.id, id: edge.id, type: edge.type, onClick: props.onElementClick, selected: isSelected, animated: edge.animated, style: edge.style, source: sourceId, target: targetId, sourceHandleId: sourceHandleId, targetHandleId: targetHandleId, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, isInteractive: isInteractive })); -} -var EdgeRenderer = React.memo(function (props) { - var _a = useStoreState$1(function (s) { return ({ - transform: s.transform, - edges: s.edges, - nodes: s.nodes, - connectionSourceId: s.connectionSourceId, - connectionPosition: s.connectionPosition, - selectedElements: s.selectedElements, - isInteractive: s.isInteractive, - }); }), transform = _a.transform, edges = _a.edges, nodes = _a.nodes, connectionSourceId = _a.connectionSourceId, _b = _a.connectionPosition, x = _b.x, y = _b.y, selectedElements = _a.selectedElements, isInteractive = _a.isInteractive; - var width = props.width, height = props.height, connectionLineStyle = props.connectionLineStyle, connectionLineType = props.connectionLineType; - if (!width) { - return null; - } - var tx = transform[0], ty = transform[1], tScale = transform[2]; - var transformStyle = "translate(" + tx + "," + ty + ") scale(" + tScale + ")"; - return (React__default.createElement("svg", { width: width, height: height, className: "react-flow__edges" }, - React__default.createElement("g", { transform: transformStyle }, - edges.map(function (e) { return renderEdge(e, props, nodes, selectedElements, isInteractive); }), - connectionSourceId && (React__default.createElement(ConnectionLine, { nodes: nodes, connectionSourceId: connectionSourceId, connectionPositionX: x, connectionPositionY: y, transform: transform, connectionLineStyle: connectionLineStyle, connectionLineType: connectionLineType, isInteractive: isInteractive }))))); -}); -EdgeRenderer.displayName = 'EdgeRenderer'; - -/** - * The user selection rectangle gets displayed when a user drags the mouse while pressing shift - */ -function getMousePosition(evt) { - var reactFlowNode = document.querySelector('.react-flow'); - if (!reactFlowNode) { - return; - } - var containerBounds = reactFlowNode.getBoundingClientRect(); - return { - x: evt.clientX - containerBounds.left, - y: evt.clientY - containerBounds.top, - }; -} -var SelectionRect = function () { - var userSelectionRect = useStoreState$1(function (s) { return s.userSelectionRect; }); - if (!userSelectionRect.draw) { - return null; - } - return (React__default.createElement("div", { className: "react-flow__selection", style: { - width: userSelectionRect.width, - height: userSelectionRect.height, - transform: "translate(" + userSelectionRect.x + "px, " + userSelectionRect.y + "px)", - } })); -}; -var UserSelection = React.memo(function (_a) { - var isInteractive = _a.isInteractive; - var _b = useStoreActions$1(function (a) { return ({ - setUserSelection: a.setUserSelection, - updateUserSelection: a.updateUserSelection, - unsetUserSelection: a.unsetUserSelection, - }); }), setUserSelection = _b.setUserSelection, updateUserSelection = _b.updateUserSelection, unsetUserSelection = _b.unsetUserSelection; - if (!isInteractive) { - return null; - } - function onMouseDown(evt) { - var mousePos = getMousePosition(evt); - if (!mousePos) { - return; - } - setUserSelection(mousePos); - } - function onMouseMove(evt) { - var mousePos = getMousePosition(evt); - if (!mousePos) { - return; - } - updateUserSelection(mousePos); - } - function onMouseUp() { - unsetUserSelection(); - } - return (React__default.createElement("div", { className: "react-flow__selectionpane", onMouseDown: onMouseDown, onMouseMove: onMouseMove, onMouseUp: onMouseUp }, - React__default.createElement(SelectionRect, null))); -}); - -var reactIs_development = createCommonjsModule(function (module, exports) { - - - -{ - (function() { - -Object.defineProperty(exports, '__esModule', { value: true }); - -// The Symbol used to tag the ReactElement-like types. If there is no native Symbol -// nor polyfill, then a plain number is used for performance. -var hasSymbol = typeof Symbol === 'function' && Symbol.for; -var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; -var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; -var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; -var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; -var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; -var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; -var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary -// (unstable) APIs that have been removed. Can we remove the symbols? - -var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; -var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; -var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; -var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; -var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; -var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; -var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; -var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; -var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; -var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; - -function isValidElementType(type) { - return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. - type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE); -} - -/** - * Forked from fbjs/warning: - * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js - * - * Only change is we use console.warn instead of console.error, - * and do nothing when 'console' is not supported. - * This really simplifies the code. - * --- - * Similar to invariant but only logs a warning if the condition is not met. - * This can be used to log issues in development environments in critical - * paths. Removing the logging code for production environments will keep the - * same logic and follow the same code paths. - */ -var lowPriorityWarningWithoutStack = function () {}; - -{ - var printWarning = function (format) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - var argIndex = 0; - var message = 'Warning: ' + format.replace(/%s/g, function () { - return args[argIndex++]; - }); - - if (typeof console !== 'undefined') { - console.warn(message); - } - - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; - - lowPriorityWarningWithoutStack = function (condition, format) { - if (format === undefined) { - throw new Error('`lowPriorityWarningWithoutStack(condition, format, ...args)` requires a warning ' + 'message argument'); - } - - if (!condition) { - for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { - args[_key2 - 2] = arguments[_key2]; - } - - printWarning.apply(void 0, [format].concat(args)); - } - }; -} - -var lowPriorityWarningWithoutStack$1 = lowPriorityWarningWithoutStack; - -function typeOf(object) { - if (typeof object === 'object' && object !== null) { - var $$typeof = object.$$typeof; - - switch ($$typeof) { - case REACT_ELEMENT_TYPE: - var type = object.type; - - switch (type) { - case REACT_ASYNC_MODE_TYPE: - case REACT_CONCURRENT_MODE_TYPE: - case REACT_FRAGMENT_TYPE: - case REACT_PROFILER_TYPE: - case REACT_STRICT_MODE_TYPE: - case REACT_SUSPENSE_TYPE: - return type; - - default: - var $$typeofType = type && type.$$typeof; - - switch ($$typeofType) { - case REACT_CONTEXT_TYPE: - case REACT_FORWARD_REF_TYPE: - case REACT_PROVIDER_TYPE: - return $$typeofType; - - default: - return $$typeof; - } - - } - - case REACT_LAZY_TYPE: - case REACT_MEMO_TYPE: - case REACT_PORTAL_TYPE: - return $$typeof; - } - } - - return undefined; -} // AsyncMode is deprecated along with isAsyncMode - -var AsyncMode = REACT_ASYNC_MODE_TYPE; -var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; -var ContextConsumer = REACT_CONTEXT_TYPE; -var ContextProvider = REACT_PROVIDER_TYPE; -var Element = REACT_ELEMENT_TYPE; -var ForwardRef = REACT_FORWARD_REF_TYPE; -var Fragment = REACT_FRAGMENT_TYPE; -var Lazy = REACT_LAZY_TYPE; -var Memo = REACT_MEMO_TYPE; -var Portal = REACT_PORTAL_TYPE; -var Profiler = REACT_PROFILER_TYPE; -var StrictMode = REACT_STRICT_MODE_TYPE; -var Suspense = REACT_SUSPENSE_TYPE; -var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated - -function isAsyncMode(object) { - { - if (!hasWarnedAboutDeprecatedIsAsyncMode) { - hasWarnedAboutDeprecatedIsAsyncMode = true; - lowPriorityWarningWithoutStack$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); - } - } - - return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; -} -function isConcurrentMode(object) { - return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; -} -function isContextConsumer(object) { - return typeOf(object) === REACT_CONTEXT_TYPE; -} -function isContextProvider(object) { - return typeOf(object) === REACT_PROVIDER_TYPE; -} -function isElement(object) { - return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; -} -function isForwardRef(object) { - return typeOf(object) === REACT_FORWARD_REF_TYPE; -} -function isFragment(object) { - return typeOf(object) === REACT_FRAGMENT_TYPE; -} -function isLazy(object) { - return typeOf(object) === REACT_LAZY_TYPE; -} -function isMemo(object) { - return typeOf(object) === REACT_MEMO_TYPE; -} -function isPortal(object) { - return typeOf(object) === REACT_PORTAL_TYPE; -} -function isProfiler(object) { - return typeOf(object) === REACT_PROFILER_TYPE; -} -function isStrictMode(object) { - return typeOf(object) === REACT_STRICT_MODE_TYPE; -} -function isSuspense(object) { - return typeOf(object) === REACT_SUSPENSE_TYPE; -} - -exports.typeOf = typeOf; -exports.AsyncMode = AsyncMode; -exports.ConcurrentMode = ConcurrentMode; -exports.ContextConsumer = ContextConsumer; -exports.ContextProvider = ContextProvider; -exports.Element = Element; -exports.ForwardRef = ForwardRef; -exports.Fragment = Fragment; -exports.Lazy = Lazy; -exports.Memo = Memo; -exports.Portal = Portal; -exports.Profiler = Profiler; -exports.StrictMode = StrictMode; -exports.Suspense = Suspense; -exports.isValidElementType = isValidElementType; -exports.isAsyncMode = isAsyncMode; -exports.isConcurrentMode = isConcurrentMode; -exports.isContextConsumer = isContextConsumer; -exports.isContextProvider = isContextProvider; -exports.isElement = isElement; -exports.isForwardRef = isForwardRef; -exports.isFragment = isFragment; -exports.isLazy = isLazy; -exports.isMemo = isMemo; -exports.isPortal = isPortal; -exports.isProfiler = isProfiler; -exports.isStrictMode = isStrictMode; -exports.isSuspense = isSuspense; - })(); -} -}); - -unwrapExports(reactIs_development); -var reactIs_development_1 = reactIs_development.typeOf; -var reactIs_development_2 = reactIs_development.AsyncMode; -var reactIs_development_3 = reactIs_development.ConcurrentMode; -var reactIs_development_4 = reactIs_development.ContextConsumer; -var reactIs_development_5 = reactIs_development.ContextProvider; -var reactIs_development_6 = reactIs_development.Element; -var reactIs_development_7 = reactIs_development.ForwardRef; -var reactIs_development_8 = reactIs_development.Fragment; -var reactIs_development_9 = reactIs_development.Lazy; -var reactIs_development_10 = reactIs_development.Memo; -var reactIs_development_11 = reactIs_development.Portal; -var reactIs_development_12 = reactIs_development.Profiler; -var reactIs_development_13 = reactIs_development.StrictMode; -var reactIs_development_14 = reactIs_development.Suspense; -var reactIs_development_15 = reactIs_development.isValidElementType; -var reactIs_development_16 = reactIs_development.isAsyncMode; -var reactIs_development_17 = reactIs_development.isConcurrentMode; -var reactIs_development_18 = reactIs_development.isContextConsumer; -var reactIs_development_19 = reactIs_development.isContextProvider; -var reactIs_development_20 = reactIs_development.isElement; -var reactIs_development_21 = reactIs_development.isForwardRef; -var reactIs_development_22 = reactIs_development.isFragment; -var reactIs_development_23 = reactIs_development.isLazy; -var reactIs_development_24 = reactIs_development.isMemo; -var reactIs_development_25 = reactIs_development.isPortal; -var reactIs_development_26 = reactIs_development.isProfiler; -var reactIs_development_27 = reactIs_development.isStrictMode; -var reactIs_development_28 = reactIs_development.isSuspense; - -var reactIs = createCommonjsModule(function (module) { - -{ - module.exports = reactIs_development; -} -}); - -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ -/* eslint-disable no-unused-vars */ -var getOwnPropertySymbols = Object.getOwnPropertySymbols; -var hasOwnProperty = Object.prototype.hasOwnProperty; -var propIsEnumerable = Object.prototype.propertyIsEnumerable; - -function toObject(val) { - if (val === null || val === undefined) { - throw new TypeError('Object.assign cannot be called with null or undefined'); - } - - return Object(val); -} - -function shouldUseNative() { - try { - if (!Object.assign) { - return false; - } - - // Detect buggy property enumeration order in older V8 versions. - - // https://bugs.chromium.org/p/v8/issues/detail?id=4118 - var test1 = new String('abc'); // eslint-disable-line no-new-wrappers - test1[5] = 'de'; - if (Object.getOwnPropertyNames(test1)[0] === '5') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test2 = {}; - for (var i = 0; i < 10; i++) { - test2['_' + String.fromCharCode(i)] = i; - } - var order2 = Object.getOwnPropertyNames(test2).map(function (n) { - return test2[n]; - }); - if (order2.join('') !== '0123456789') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test3 = {}; - 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { - test3[letter] = letter; - }); - if (Object.keys(Object.assign({}, test3)).join('') !== - 'abcdefghijklmnopqrst') { - return false; - } - - return true; - } catch (err) { - // We don't expect any of the above to throw, but better to be safe. - return false; - } -} - -var objectAssign = shouldUseNative() ? Object.assign : function (target, source) { - var from; - var to = toObject(target); - var symbols; - - for (var s = 1; s < arguments.length; s++) { - from = Object(arguments[s]); - - for (var key in from) { - if (hasOwnProperty.call(from, key)) { - to[key] = from[key]; - } - } - - if (getOwnPropertySymbols) { - symbols = getOwnPropertySymbols(from); - for (var i = 0; i < symbols.length; i++) { - if (propIsEnumerable.call(from, symbols[i])) { - to[symbols[i]] = from[symbols[i]]; - } - } - } - } - - return to; -}; - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; - -var ReactPropTypesSecret_1 = ReactPropTypesSecret; - -var printWarning = function() {}; - -{ - var ReactPropTypesSecret$1 = ReactPropTypesSecret_1; - var loggedTypeFailures = {}; - var has$1 = Function.call.bind(Object.prototype.hasOwnProperty); - - printWarning = function(text) { - var message = 'Warning: ' + text; - if (typeof console !== 'undefined') { - console.error(message); - } - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; -} - -/** - * Assert that the values match with the type specs. - * Error messages are memorized and will only be shown once. - * - * @param {object} typeSpecs Map of name to a ReactPropType - * @param {object} values Runtime values that need to be type-checked - * @param {string} location e.g. "prop", "context", "child context" - * @param {string} componentName Name of the component for error messages. - * @param {?Function} getStack Returns the component stack. - * @private - */ -function checkPropTypes(typeSpecs, values, location, componentName, getStack) { - { - for (var typeSpecName in typeSpecs) { - if (has$1(typeSpecs, typeSpecName)) { - var error; - // Prop type validation may throw. In case they do, we don't want to - // fail the render phase where it didn't fail before. So we log it. - // After these have been cleaned up, we'll let them throw. - try { - // This is intentionally an invariant that gets caught. It's the same - // behavior as without this statement except with a better message. - if (typeof typeSpecs[typeSpecName] !== 'function') { - var err = Error( - (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + - 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' - ); - err.name = 'Invariant Violation'; - throw err; - } - error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1); - } catch (ex) { - error = ex; - } - if (error && !(error instanceof Error)) { - printWarning( - (componentName || 'React class') + ': type specification of ' + - location + ' `' + typeSpecName + '` is invalid; the type checker ' + - 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + - 'You may have forgotten to pass an argument to the type checker ' + - 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + - 'shape all require an argument).' - ); - } - if (error instanceof Error && !(error.message in loggedTypeFailures)) { - // Only monitor this failure once because there tends to be a lot of the - // same error. - loggedTypeFailures[error.message] = true; - - var stack = getStack ? getStack() : ''; - - printWarning( - 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') - ); - } - } - } - } -} - -/** - * Resets warning cache when testing. - * - * @private - */ -checkPropTypes.resetWarningCache = function() { - { - loggedTypeFailures = {}; - } -}; - -var checkPropTypes_1 = checkPropTypes; - -var has$2 = Function.call.bind(Object.prototype.hasOwnProperty); -var printWarning$1 = function() {}; - -{ - printWarning$1 = function(text) { - var message = 'Warning: ' + text; - if (typeof console !== 'undefined') { - console.error(message); - } - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; -} - -function emptyFunctionThatReturnsNull() { - return null; -} - -var factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) { - /* global Symbol */ - var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; - var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. - - /** - * Returns the iterator method function contained on the iterable object. - * - * Be sure to invoke the function with the iterable as context: - * - * var iteratorFn = getIteratorFn(myIterable); - * if (iteratorFn) { - * var iterator = iteratorFn.call(myIterable); - * ... - * } - * - * @param {?object} maybeIterable - * @return {?function} - */ - function getIteratorFn(maybeIterable) { - var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); - if (typeof iteratorFn === 'function') { - return iteratorFn; - } - } - - /** - * Collection of methods that allow declaration and validation of props that are - * supplied to React components. Example usage: - * - * var Props = require('ReactPropTypes'); - * var MyArticle = React.createClass({ - * propTypes: { - * // An optional string prop named "description". - * description: Props.string, - * - * // A required enum prop named "category". - * category: Props.oneOf(['News','Photos']).isRequired, - * - * // A prop named "dialog" that requires an instance of Dialog. - * dialog: Props.instanceOf(Dialog).isRequired - * }, - * render: function() { ... } - * }); - * - * A more formal specification of how these methods are used: - * - * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) - * decl := ReactPropTypes.{type}(.isRequired)? - * - * Each and every declaration produces a function with the same signature. This - * allows the creation of custom validation functions. For example: - * - * var MyLink = React.createClass({ - * propTypes: { - * // An optional string or URI prop named "href". - * href: function(props, propName, componentName) { - * var propValue = props[propName]; - * if (propValue != null && typeof propValue !== 'string' && - * !(propValue instanceof URI)) { - * return new Error( - * 'Expected a string or an URI for ' + propName + ' in ' + - * componentName - * ); - * } - * } - * }, - * render: function() {...} - * }); - * - * @internal - */ - - var ANONYMOUS = '<>'; - - // Important! - // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. - var ReactPropTypes = { - array: createPrimitiveTypeChecker('array'), - bool: createPrimitiveTypeChecker('boolean'), - func: createPrimitiveTypeChecker('function'), - number: createPrimitiveTypeChecker('number'), - object: createPrimitiveTypeChecker('object'), - string: createPrimitiveTypeChecker('string'), - symbol: createPrimitiveTypeChecker('symbol'), - - any: createAnyTypeChecker(), - arrayOf: createArrayOfTypeChecker, - element: createElementTypeChecker(), - elementType: createElementTypeTypeChecker(), - instanceOf: createInstanceTypeChecker, - node: createNodeChecker(), - objectOf: createObjectOfTypeChecker, - oneOf: createEnumTypeChecker, - oneOfType: createUnionTypeChecker, - shape: createShapeTypeChecker, - exact: createStrictShapeTypeChecker, - }; - - /** - * inlined Object.is polyfill to avoid requiring consumers ship their own - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is - */ - /*eslint-disable no-self-compare*/ - function is(x, y) { - // SameValue algorithm - if (x === y) { - // Steps 1-5, 7-10 - // Steps 6.b-6.e: +0 != -0 - return x !== 0 || 1 / x === 1 / y; - } else { - // Step 6.a: NaN == NaN - return x !== x && y !== y; - } - } - /*eslint-enable no-self-compare*/ - - /** - * We use an Error-like object for backward compatibility as people may call - * PropTypes directly and inspect their output. However, we don't use real - * Errors anymore. We don't inspect their stack anyway, and creating them - * is prohibitively expensive if they are created too often, such as what - * happens in oneOfType() for any type before the one that matched. - */ - function PropTypeError(message) { - this.message = message; - this.stack = ''; - } - // Make `instanceof Error` still work for returned errors. - PropTypeError.prototype = Error.prototype; - - function createChainableTypeChecker(validate) { - { - var manualPropTypeCallCache = {}; - var manualPropTypeWarningCount = 0; - } - function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { - componentName = componentName || ANONYMOUS; - propFullName = propFullName || propName; - - if (secret !== ReactPropTypesSecret_1) { - if (throwOnDirectAccess) { - // New behavior only for users of `prop-types` package - var err = new Error( - 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + - 'Use `PropTypes.checkPropTypes()` to call them. ' + - 'Read more at http://fb.me/use-check-prop-types' - ); - err.name = 'Invariant Violation'; - throw err; - } else if ( typeof console !== 'undefined') { - // Old behavior for people using React.PropTypes - var cacheKey = componentName + ':' + propName; - if ( - !manualPropTypeCallCache[cacheKey] && - // Avoid spamming the console because they are often not actionable except for lib authors - manualPropTypeWarningCount < 3 - ) { - printWarning$1( - 'You are manually calling a React.PropTypes validation ' + - 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + - 'and will throw in the standalone `prop-types` package. ' + - 'You may be seeing this warning due to a third-party PropTypes ' + - 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' - ); - manualPropTypeCallCache[cacheKey] = true; - manualPropTypeWarningCount++; - } - } - } - if (props[propName] == null) { - if (isRequired) { - if (props[propName] === null) { - return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); - } - return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); - } - return null; - } else { - return validate(props, propName, componentName, location, propFullName); - } - } - - var chainedCheckType = checkType.bind(null, false); - chainedCheckType.isRequired = checkType.bind(null, true); - - return chainedCheckType; - } - - function createPrimitiveTypeChecker(expectedType) { - function validate(props, propName, componentName, location, propFullName, secret) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== expectedType) { - // `propValue` being instance of, say, date/regexp, pass the 'object' - // check, but we can offer a more precise error message here rather than - // 'of type `object`'. - var preciseType = getPreciseType(propValue); - - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createAnyTypeChecker() { - return createChainableTypeChecker(emptyFunctionThatReturnsNull); - } - - function createArrayOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== 'function') { - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); - } - var propValue = props[propName]; - if (!Array.isArray(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); - } - for (var i = 0; i < propValue.length; i++) { - var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1); - if (error instanceof Error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createElementTypeChecker() { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - if (!isValidElement(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createElementTypeTypeChecker() { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - if (!reactIs.isValidElementType(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createInstanceTypeChecker(expectedClass) { - function validate(props, propName, componentName, location, propFullName) { - if (!(props[propName] instanceof expectedClass)) { - var expectedClassName = expectedClass.name || ANONYMOUS; - var actualClassName = getClassName(props[propName]); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createEnumTypeChecker(expectedValues) { - if (!Array.isArray(expectedValues)) { - { - if (arguments.length > 1) { - printWarning$1( - 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + - 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' - ); - } else { - printWarning$1('Invalid argument supplied to oneOf, expected an array.'); - } - } - return emptyFunctionThatReturnsNull; - } - - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - for (var i = 0; i < expectedValues.length; i++) { - if (is(propValue, expectedValues[i])) { - return null; - } - } - - var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { - var type = getPreciseType(value); - if (type === 'symbol') { - return String(value); - } - return value; - }); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); - } - return createChainableTypeChecker(validate); - } - - function createObjectOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== 'function') { - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); - } - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); - } - for (var key in propValue) { - if (has$2(propValue, key)) { - var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1); - if (error instanceof Error) { - return error; - } - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createUnionTypeChecker(arrayOfTypeCheckers) { - if (!Array.isArray(arrayOfTypeCheckers)) { - printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') ; - return emptyFunctionThatReturnsNull; - } - - for (var i = 0; i < arrayOfTypeCheckers.length; i++) { - var checker = arrayOfTypeCheckers[i]; - if (typeof checker !== 'function') { - printWarning$1( - 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + - 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' - ); - return emptyFunctionThatReturnsNull; - } - } - - function validate(props, propName, componentName, location, propFullName) { - for (var i = 0; i < arrayOfTypeCheckers.length; i++) { - var checker = arrayOfTypeCheckers[i]; - if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) { - return null; - } - } - - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); - } - return createChainableTypeChecker(validate); - } - - function createNodeChecker() { - function validate(props, propName, componentName, location, propFullName) { - if (!isNode(props[propName])) { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); - } - for (var key in shapeTypes) { - var checker = shapeTypes[key]; - if (!checker) { - continue; - } - var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1); - if (error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createStrictShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); - } - // We need to check all keys in case some are required but missing from - // props. - var allKeys = objectAssign({}, props[propName], shapeTypes); - for (var key in allKeys) { - var checker = shapeTypes[key]; - if (!checker) { - return new PropTypeError( - 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + - '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + - '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') - ); - } - var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1); - if (error) { - return error; - } - } - return null; - } - - return createChainableTypeChecker(validate); - } - - function isNode(propValue) { - switch (typeof propValue) { - case 'number': - case 'string': - case 'undefined': - return true; - case 'boolean': - return !propValue; - case 'object': - if (Array.isArray(propValue)) { - return propValue.every(isNode); - } - if (propValue === null || isValidElement(propValue)) { - return true; - } - - var iteratorFn = getIteratorFn(propValue); - if (iteratorFn) { - var iterator = iteratorFn.call(propValue); - var step; - if (iteratorFn !== propValue.entries) { - while (!(step = iterator.next()).done) { - if (!isNode(step.value)) { - return false; - } - } - } else { - // Iterator will provide entry [k,v] tuples rather than values. - while (!(step = iterator.next()).done) { - var entry = step.value; - if (entry) { - if (!isNode(entry[1])) { - return false; - } - } - } - } - } else { - return false; - } - - return true; - default: - return false; - } - } - - function isSymbol(propType, propValue) { - // Native Symbol. - if (propType === 'symbol') { - return true; - } - - // falsy value can't be a Symbol - if (!propValue) { - return false; - } - - // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' - if (propValue['@@toStringTag'] === 'Symbol') { - return true; - } - - // Fallback for non-spec compliant Symbols which are polyfilled. - if (typeof Symbol === 'function' && propValue instanceof Symbol) { - return true; - } - - return false; - } - - // Equivalent of `typeof` but with special handling for array and regexp. - function getPropType(propValue) { - var propType = typeof propValue; - if (Array.isArray(propValue)) { - return 'array'; - } - if (propValue instanceof RegExp) { - // Old webkits (at least until Android 4.0) return 'function' rather than - // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ - // passes PropTypes.object. - return 'object'; - } - if (isSymbol(propType, propValue)) { - return 'symbol'; - } - return propType; - } - - // This handles more types than `getPropType`. Only used for error messages. - // See `createPrimitiveTypeChecker`. - function getPreciseType(propValue) { - if (typeof propValue === 'undefined' || propValue === null) { - return '' + propValue; - } - var propType = getPropType(propValue); - if (propType === 'object') { - if (propValue instanceof Date) { - return 'date'; - } else if (propValue instanceof RegExp) { - return 'regexp'; - } - } - return propType; - } - - // Returns a string that is postfixed to a warning about an invalid type. - // For example, "undefined" or "of type array" - function getPostfixForTypeWarning(value) { - var type = getPreciseType(value); - switch (type) { - case 'array': - case 'object': - return 'an ' + type; - case 'boolean': - case 'date': - case 'regexp': - return 'a ' + type; - default: - return type; - } - } - - // Returns class name of the object, if any. - function getClassName(propValue) { - if (!propValue.constructor || !propValue.constructor.name) { - return ANONYMOUS; - } - return propValue.constructor.name; - } - - ReactPropTypes.checkPropTypes = checkPropTypes_1; - ReactPropTypes.resetWarningCache = checkPropTypes_1.resetWarningCache; - ReactPropTypes.PropTypes = ReactPropTypes; - - return ReactPropTypes; -}; - -var propTypes = createCommonjsModule(function (module) { -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -{ - var ReactIs = reactIs; - - // By explicitly using `prop-types` you are opting into new development behavior. - // http://fb.me/prop-types-in-prod - var throwOnDirectAccess = true; - module.exports = factoryWithTypeCheckers(ReactIs.isElement, throwOnDirectAccess); -} -}); - -// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc -function findInArray(array -/*: Array | TouchList*/ -, callback -/*: Function*/ -) -/*: any*/ -{ - for (let i = 0, length = array.length; i < length; i++) { - if (callback.apply(callback, [array[i], i, array])) return array[i]; - } -} -function isFunction(func -/*: any*/ -) -/*: boolean*/ -{ - return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]'; -} -function isNum(num -/*: any*/ -) -/*: boolean*/ -{ - return typeof num === 'number' && !isNaN(num); -} -function int(a -/*: string*/ -) -/*: number*/ -{ - return parseInt(a, 10); -} -function dontSetMe(props -/*: Object*/ -, propName -/*: string*/ -, componentName -/*: string*/ -) { - if (props[propName]) { - return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`); - } -} - -const prefixes = ['Moz', 'Webkit', 'O', 'ms']; -function getPrefix(prop -/*: string*/ -= 'transform') -/*: string*/ -{ - // Checking specifically for 'window.document' is for pseudo-browser server-side - // environments that define 'window' as the global context. - // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84) - if (typeof window === 'undefined' || typeof window.document === 'undefined') return ''; - const style = window.document.documentElement.style; - if (prop in style) return ''; - - for (let i = 0; i < prefixes.length; i++) { - if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i]; - } - - return ''; -} -function browserPrefixToKey(prop -/*: string*/ -, prefix -/*: string*/ -) -/*: string*/ -{ - return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop; -} - -function kebabToTitleCase(str -/*: string*/ -) -/*: string*/ -{ - let out = ''; - let shouldCapitalize = true; - - for (let i = 0; i < str.length; i++) { - if (shouldCapitalize) { - out += str[i].toUpperCase(); - shouldCapitalize = false; - } else if (str[i] === '-') { - shouldCapitalize = true; - } else { - out += str[i]; - } - } - - return out; -} // Default export is the prefix itself, like 'Moz', 'Webkit', etc -// Note that you may have to re-test for certain things; for instance, Chrome 50 -// can handle unprefixed `transform`, but not unprefixed `user-select` - - -var browserPrefix = getPrefix(); - -/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/ - -let matchesSelectorFunc = ''; -function matchesSelector(el -/*: Node*/ -, selector -/*: string*/ -) -/*: boolean*/ -{ - if (!matchesSelectorFunc) { - matchesSelectorFunc = findInArray(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) { - // $FlowIgnore: Doesn't think elements are indexable - return isFunction(el[method]); - }); - } // Might not be found entirely (not an Element?) - in that case, bail - // $FlowIgnore: Doesn't think elements are indexable - - - if (!isFunction(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable - - return el[matchesSelectorFunc](selector); -} // Works up the tree to the draggable itself attempting to match selector. - -function matchesSelectorAndParentsTo(el -/*: Node*/ -, selector -/*: string*/ -, baseNode -/*: Node*/ -) -/*: boolean*/ -{ - let node = el; - - do { - if (matchesSelector(node, selector)) return true; - if (node === baseNode) return false; - node = node.parentNode; - } while (node); - - return false; -} -function addEvent(el -/*: ?Node*/ -, event -/*: string*/ -, handler -/*: Function*/ -, inputOptions -/*: Object*/ -) -/*: void*/ -{ - if (!el) return; - const options = { - capture: true, - ...inputOptions - }; - - if (el.addEventListener) { - el.addEventListener(event, handler, options); - } else if (el.attachEvent) { - el.attachEvent('on' + event, handler); - } else { - // $FlowIgnore: Doesn't think elements are indexable - el['on' + event] = handler; - } -} -function removeEvent(el -/*: ?Node*/ -, event -/*: string*/ -, handler -/*: Function*/ -, inputOptions -/*: Object*/ -) -/*: void*/ -{ - if (!el) return; - const options = { - capture: true, - ...inputOptions - }; - - if (el.removeEventListener) { - el.removeEventListener(event, handler, options); - } else if (el.detachEvent) { - el.detachEvent('on' + event, handler); - } else { - // $FlowIgnore: Doesn't think elements are indexable - el['on' + event] = null; - } -} -function outerHeight(node -/*: HTMLElement*/ -) -/*: number*/ -{ - // This is deliberately excluding margin for our calculations, since we are using - // offsetTop which is including margin. See getBoundPosition - let height = node.clientHeight; - const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - height += int(computedStyle.borderTopWidth); - height += int(computedStyle.borderBottomWidth); - return height; -} -function outerWidth(node -/*: HTMLElement*/ -) -/*: number*/ -{ - // This is deliberately excluding margin for our calculations, since we are using - // offsetLeft which is including margin. See getBoundPosition - let width = node.clientWidth; - const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - width += int(computedStyle.borderLeftWidth); - width += int(computedStyle.borderRightWidth); - return width; -} -function innerHeight(node -/*: HTMLElement*/ -) -/*: number*/ -{ - let height = node.clientHeight; - const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - height -= int(computedStyle.paddingTop); - height -= int(computedStyle.paddingBottom); - return height; -} -function innerWidth(node -/*: HTMLElement*/ -) -/*: number*/ -{ - let width = node.clientWidth; - const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - width -= int(computedStyle.paddingLeft); - width -= int(computedStyle.paddingRight); - return width; -} // Get from offsetParent - -function offsetXYFromParent(evt -/*: {clientX: number, clientY: number}*/ -, offsetParent -/*: HTMLElement*/ -, scale -/*: number*/ -) -/*: ControlPosition*/ -{ - const isBody = offsetParent === offsetParent.ownerDocument.body; - const offsetParentRect = isBody ? { - left: 0, - top: 0 - } : offsetParent.getBoundingClientRect(); - const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale; - const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale; - return { - x, - y - }; -} -function createCSSTransform(controlPos -/*: ControlPosition*/ -, positionOffset -/*: PositionOffsetControlPosition*/ -) -/*: Object*/ -{ - const translation = getTranslation(controlPos, positionOffset, 'px'); - return { - [browserPrefixToKey('transform', browserPrefix)]: translation - }; -} -function createSVGTransform(controlPos -/*: ControlPosition*/ -, positionOffset -/*: PositionOffsetControlPosition*/ -) -/*: string*/ -{ - const translation = getTranslation(controlPos, positionOffset, ''); - return translation; -} -function getTranslation({ - x, - y -} -/*: ControlPosition*/ -, positionOffset -/*: PositionOffsetControlPosition*/ -, unitSuffix -/*: string*/ -) -/*: string*/ -{ - let translation = `translate(${x}${unitSuffix},${y}${unitSuffix})`; - - if (positionOffset) { - const defaultX = `${typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix}`; - const defaultY = `${typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix}`; - translation = `translate(${defaultX}, ${defaultY})` + translation; - } - - return translation; -} -function getTouch(e -/*: MouseTouchEvent*/ -, identifier -/*: number*/ -) -/*: ?{clientX: number, clientY: number}*/ -{ - return e.targetTouches && findInArray(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && findInArray(e.changedTouches, t => identifier === t.identifier); -} -function getTouchIdentifier(e -/*: MouseTouchEvent*/ -) -/*: ?number*/ -{ - if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier; - if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier; -} // User-select Hacks: -// -// Useful for preventing blue highlights all over everything when dragging. -// Note we're passing `document` b/c we could be iframed - -function addUserSelectStyles(doc -/*: ?Document*/ -) { - if (!doc) return; - let styleEl = doc.getElementById('react-draggable-style-el'); - - if (!styleEl) { - styleEl = doc.createElement('style'); - styleEl.type = 'text/css'; - styleEl.id = 'react-draggable-style-el'; - styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n'; - styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\n'; - doc.getElementsByTagName('head')[0].appendChild(styleEl); - } - - if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection'); -} -function removeUserSelectStyles(doc -/*: ?Document*/ -) { - if (!doc) return; - - try { - if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE - - if (doc.selection) { - // $FlowIgnore: IE - doc.selection.empty(); - } else { - // Remove selection caused by scroll, unless it's a focused input - // (we use doc.defaultView in case we're in an iframe) - const selection = (doc.defaultView || window).getSelection(); - - if (selection && selection.type !== 'Caret') { - selection.removeAllRanges(); - } - } - } catch (e) {// probably IE - } -} -function addClassName(el -/*: HTMLElement*/ -, className -/*: string*/ -) { - if (el.classList) { - el.classList.add(className); - } else { - if (!el.className.match(new RegExp(`(?:^|\\s)${className}(?!\\S)`))) { - el.className += ` ${className}`; - } - } -} -function removeClassName(el -/*: HTMLElement*/ -, className -/*: string*/ -) { - if (el.classList) { - el.classList.remove(className); - } else { - el.className = el.className.replace(new RegExp(`(?:^|\\s)${className}(?!\\S)`, 'g'), ''); - } -} - -/*:: import type Draggable from '../Draggable';*/ - -/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/ - -/*:: import type DraggableCore from '../DraggableCore';*/ - -function getBoundPosition(draggable -/*: Draggable*/ -, x -/*: number*/ -, y -/*: number*/ -) -/*: [number, number]*/ -{ - // If no bounds, short-circuit and move on - if (!draggable.props.bounds) return [x, y]; // Clone new bounds - - let { - bounds - } = draggable.props; - bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds); - const node = findDOMNode(draggable); - - if (typeof bounds === 'string') { - const { - ownerDocument - } = node; - const ownerWindow = ownerDocument.defaultView; - let boundNode; - - if (bounds === 'parent') { - boundNode = node.parentNode; - } else { - boundNode = ownerDocument.querySelector(bounds); - } - - if (!(boundNode instanceof ownerWindow.HTMLElement)) { - throw new Error('Bounds selector "' + bounds + '" could not find an element.'); - } - - const nodeStyle = ownerWindow.getComputedStyle(node); - const boundNodeStyle = ownerWindow.getComputedStyle(boundNode); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right. - - bounds = { - left: -node.offsetLeft + int(boundNodeStyle.paddingLeft) + int(nodeStyle.marginLeft), - top: -node.offsetTop + int(boundNodeStyle.paddingTop) + int(nodeStyle.marginTop), - right: innerWidth(boundNode) - outerWidth(node) - node.offsetLeft + int(boundNodeStyle.paddingRight) - int(nodeStyle.marginRight), - bottom: innerHeight(boundNode) - outerHeight(node) - node.offsetTop + int(boundNodeStyle.paddingBottom) - int(nodeStyle.marginBottom) - }; - } // Keep x and y below right and bottom limits... - - - if (isNum(bounds.right)) x = Math.min(x, bounds.right); - if (isNum(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits. - - if (isNum(bounds.left)) x = Math.max(x, bounds.left); - if (isNum(bounds.top)) y = Math.max(y, bounds.top); - return [x, y]; -} -function snapToGrid(grid -/*: [number, number]*/ -, pendingX -/*: number*/ -, pendingY -/*: number*/ -) -/*: [number, number]*/ -{ - const x = Math.round(pendingX / grid[0]) * grid[0]; - const y = Math.round(pendingY / grid[1]) * grid[1]; - return [x, y]; -} -function canDragX(draggable -/*: Draggable*/ -) -/*: boolean*/ -{ - return draggable.props.axis === 'both' || draggable.props.axis === 'x'; -} -function canDragY(draggable -/*: Draggable*/ -) -/*: boolean*/ -{ - return draggable.props.axis === 'both' || draggable.props.axis === 'y'; -} // Get {x, y} positions from event. - -function getControlPosition(e -/*: MouseTouchEvent*/ -, touchIdentifier -/*: ?number*/ -, draggableCore -/*: DraggableCore*/ -) -/*: ?ControlPosition*/ -{ - const touchObj = typeof touchIdentifier === 'number' ? getTouch(e, touchIdentifier) : null; - if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch - - const node = findDOMNode(draggableCore); // User can provide an offsetParent if desired. - - const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body; - return offsetXYFromParent(touchObj || e, offsetParent, draggableCore.props.scale); -} // Create an data object exposed by 's events - -function createCoreData(draggable -/*: DraggableCore*/ -, x -/*: number*/ -, y -/*: number*/ -) -/*: DraggableData*/ -{ - const state = draggable.state; - const isStart = !isNum(state.lastX); - const node = findDOMNode(draggable); - - if (isStart) { - // If this is our first move, use the x and y as last coords. - return { - node, - deltaX: 0, - deltaY: 0, - lastX: x, - lastY: y, - x, - y - }; - } else { - // Otherwise calculate proper values. - return { - node, - deltaX: x - state.lastX, - deltaY: y - state.lastY, - lastX: state.lastX, - lastY: state.lastY, - x, - y - }; - } -} // Create an data exposed by 's events - -function createDraggableData(draggable -/*: Draggable*/ -, coreData -/*: DraggableData*/ -) -/*: DraggableData*/ -{ - const scale = draggable.props.scale; - return { - node: coreData.node, - x: draggable.state.x + coreData.deltaX / scale, - y: draggable.state.y + coreData.deltaY / scale, - deltaX: coreData.deltaX / scale, - deltaY: coreData.deltaY / scale, - lastX: draggable.state.x, - lastY: draggable.state.y - }; -} // A lot faster than stringify/parse - -function cloneBounds(bounds -/*: Bounds*/ -) -/*: Bounds*/ -{ - return { - left: bounds.left, - top: bounds.top, - right: bounds.right, - bottom: bounds.bottom - }; -} - -function findDOMNode(draggable -/*: Draggable | DraggableCore*/ -) -/*: HTMLElement*/ -{ - const node = ReactDOM.findDOMNode(draggable); - - if (!node) { - throw new Error(': Unmounted during event!'); - } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME - - - return node; -} - -/*eslint no-console:0*/ -function log(...args) { -} - -function _defineProperty$1(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; } -/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/ - -/*:: import type {Element as ReactElement} from 'react';*/ - -// Simple abstraction for dragging events names. -const eventsFor = { - touch: { - start: 'touchstart', - move: 'touchmove', - stop: 'touchend' - }, - mouse: { - start: 'mousedown', - move: 'mousemove', - stop: 'mouseup' - } -}; // Default to mouse events. - -let dragEventFor = eventsFor.mouse; -/*:: type DraggableCoreState = { - dragging: boolean, - lastX: number, - lastY: number, - touchIdentifier: ?number -};*/ - -/*:: export type DraggableBounds = { - left: number, - right: number, - top: number, - bottom: number, -};*/ - -/*:: export type DraggableData = { - node: HTMLElement, - x: number, y: number, - deltaX: number, deltaY: number, - lastX: number, lastY: number, -};*/ - -/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/ - -/*:: export type ControlPosition = {x: number, y: number};*/ - -/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/ - -/*:: export type DraggableCoreProps = { - allowAnyClick: boolean, - cancel: string, - children: ReactElement, - disabled: boolean, - enableUserSelectHack: boolean, - offsetParent: HTMLElement, - grid: [number, number], - handle: string, - onStart: DraggableEventHandler, - onDrag: DraggableEventHandler, - onStop: DraggableEventHandler, - onMouseDown: (e: MouseEvent) => void, - scale: number, -};*/ - -// -// Define . -// -// is for advanced usage of . It maintains minimal internal state so it can -// work well with libraries that require more control over the element. -// -class DraggableCore extends React__default.Component -/*:: */ -{ - constructor(...args) { - super(...args); - - _defineProperty$1(this, "state", { - dragging: false, - // Used while dragging to determine deltas. - lastX: NaN, - lastY: NaN, - touchIdentifier: null - }); - - _defineProperty$1(this, "mounted", false); - - _defineProperty$1(this, "handleDragStart", e => { - // Make it possible to attach event handlers on top of this one. - this.props.onMouseDown(e); // Only accept left-clicks. - - if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed) - - const thisNode = ReactDOM.findDOMNode(this); - - if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) { - throw new Error(' not mounted on DragStart!'); - } - - const { - ownerDocument - } = thisNode; // Short circuit if handle or cancel prop was provided and selector doesn't match. - - if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !matchesSelectorAndParentsTo(e.target, this.props.handle, thisNode) || this.props.cancel && matchesSelectorAndParentsTo(e.target, this.props.cancel, thisNode)) { - return; - } // Prevent scrolling on mobile devices, like ipad/iphone. - // Important that this is after handle/cancel. - - - if (e.type === 'touchstart') e.preventDefault(); // Set touch identifier in component state if this is a touch event. This allows us to - // distinguish between individual touches on multitouch screens by identifying which - // touchpoint was set to this element. - - const touchIdentifier = getTouchIdentifier(e); - this.setState({ - touchIdentifier - }); // Get the current drag point from the event. This is used as the offset. - - const position = getControlPosition(e, touchIdentifier, this); - if (position == null) return; // not possible but satisfies flow - - const { - x, - y - } = position; // Create an event object with all the data parents need to make a decision here. - - const coreEvent = createCoreData(this, x, y); - - log('calling', this.props.onStart); - const shouldUpdate = this.props.onStart(e, coreEvent); - if (shouldUpdate === false || this.mounted === false) return; // Add a style to the body to disable user-select. This prevents text from - // being selected all over the page. - - if (this.props.enableUserSelectHack) addUserSelectStyles(ownerDocument); // Initiate dragging. Set the current x and y as offsets - // so we know how much we've moved during the drag. This allows us - // to drag elements around even if they have been moved, without issue. - - this.setState({ - dragging: true, - lastX: x, - lastY: y - }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of - // this element. We use different events depending on whether or not we have detected that this - // is a touch-capable device. - - addEvent(ownerDocument, dragEventFor.move, this.handleDrag); - addEvent(ownerDocument, dragEventFor.stop, this.handleDragStop); - }); - - _defineProperty$1(this, "handleDrag", e => { - // Get the current drag point from the event. This is used as the offset. - const position = getControlPosition(e, this.state.touchIdentifier, this); - if (position == null) return; - let { - x, - y - } = position; // Snap to grid if prop has been provided - - if (Array.isArray(this.props.grid)) { - let deltaX = x - this.state.lastX, - deltaY = y - this.state.lastY; - [deltaX, deltaY] = snapToGrid(this.props.grid, deltaX, deltaY); - if (!deltaX && !deltaY) return; // skip useless drag - - x = this.state.lastX + deltaX, y = this.state.lastY + deltaY; - } - - const coreEvent = createCoreData(this, x, y); - - const shouldUpdate = this.props.onDrag(e, coreEvent); - - if (shouldUpdate === false || this.mounted === false) { - try { - // $FlowIgnore - this.handleDragStop(new MouseEvent('mouseup')); - } catch (err) { - // Old browsers - const event = ((document.createEvent('MouseEvents') - /*: any*/ - ) - /*: MouseTouchEvent*/ - ); // I see why this insanity was deprecated - // $FlowIgnore - - event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); - this.handleDragStop(event); - } - - return; - } - - this.setState({ - lastX: x, - lastY: y - }); - }); - - _defineProperty$1(this, "handleDragStop", e => { - if (!this.state.dragging) return; - const position = getControlPosition(e, this.state.touchIdentifier, this); - if (position == null) return; - const { - x, - y - } = position; - const coreEvent = createCoreData(this, x, y); // Call event handler - - const shouldContinue = this.props.onStop(e, coreEvent); - if (shouldContinue === false || this.mounted === false) return false; - const thisNode = ReactDOM.findDOMNode(this); - - if (thisNode) { - // Remove user-select hack - if (this.props.enableUserSelectHack) removeUserSelectStyles(thisNode.ownerDocument); - } - - this.setState({ - dragging: false, - lastX: NaN, - lastY: NaN - }); - - if (thisNode) { - removeEvent(thisNode.ownerDocument, dragEventFor.move, this.handleDrag); - removeEvent(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop); - } - }); - - _defineProperty$1(this, "onMouseDown", e => { - dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse - - return this.handleDragStart(e); - }); - - _defineProperty$1(this, "onMouseUp", e => { - dragEventFor = eventsFor.mouse; - return this.handleDragStop(e); - }); - - _defineProperty$1(this, "onTouchStart", e => { - // We're on a touch device now, so change the event handlers - dragEventFor = eventsFor.touch; - return this.handleDragStart(e); - }); - - _defineProperty$1(this, "onTouchEnd", e => { - // We're on a touch device now, so change the event handlers - dragEventFor = eventsFor.touch; - return this.handleDragStop(e); - }); - } - - componentDidMount() { - this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable. - // https://developers.google.com/web/updates/2017/01/scrolling-intervention - - const thisNode = ReactDOM.findDOMNode(this); - - if (thisNode) { - addEvent(thisNode, eventsFor.touch.start, this.onTouchStart, { - passive: false - }); - } - } - - componentWillUnmount() { - this.mounted = false; // Remove any leftover event handlers. Remove both touch and mouse handlers in case - // some browser quirk caused a touch event to fire during a mouse move, or vice versa. - - const thisNode = ReactDOM.findDOMNode(this); - - if (thisNode) { - const { - ownerDocument - } = thisNode; - removeEvent(ownerDocument, eventsFor.mouse.move, this.handleDrag); - removeEvent(ownerDocument, eventsFor.touch.move, this.handleDrag); - removeEvent(ownerDocument, eventsFor.mouse.stop, this.handleDragStop); - removeEvent(ownerDocument, eventsFor.touch.stop, this.handleDragStop); - removeEvent(thisNode, eventsFor.touch.start, this.onTouchStart, { - passive: false - }); - if (this.props.enableUserSelectHack) removeUserSelectStyles(ownerDocument); - } - } - - render() { - // Reuse the child provided - // This makes it flexible to use whatever element is wanted (div, ul, etc) - return React__default.cloneElement(React__default.Children.only(this.props.children), { - // Note: mouseMove handler is attached to document so it will still function - // when the user drags quickly and leaves the bounds of the element. - onMouseDown: this.onMouseDown, - onMouseUp: this.onMouseUp, - // onTouchStart is added on `componentDidMount` so they can be added with - // {passive: false}, which allows it to cancel. See - // https://developers.google.com/web/updates/2017/01/scrolling-intervention - onTouchEnd: this.onTouchEnd - }); - } - -} - -_defineProperty$1(DraggableCore, "displayName", 'DraggableCore'); - -_defineProperty$1(DraggableCore, "propTypes", { - /** - * `allowAnyClick` allows dragging using any mouse button. - * By default, we only accept the left button. - * - * Defaults to `false`. - */ - allowAnyClick: propTypes.bool, - - /** - * `disabled`, if true, stops the from dragging. All handlers, - * with the exception of `onMouseDown`, will not fire. - */ - disabled: propTypes.bool, - - /** - * By default, we add 'user-select:none' attributes to the document body - * to prevent ugly text selection during drag. If this is causing problems - * for your app, set this to `false`. - */ - enableUserSelectHack: propTypes.bool, - - /** - * `offsetParent`, if set, uses the passed DOM node to compute drag offsets - * instead of using the parent node. - */ - offsetParent: function (props - /*: DraggableCoreProps*/ - , propName - /*: $Keys*/ - ) { - if (props[propName] && props[propName].nodeType !== 1) { - throw new Error('Draggable\'s offsetParent must be a DOM Node.'); - } - }, - - /** - * `grid` specifies the x and y that dragging should snap to. - */ - grid: propTypes.arrayOf(propTypes.number), - - /** - * `handle` specifies a selector to be used as the handle that initiates drag. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
- *
Click me to drag
- *
This is some other content
- *
- *
- * ); - * } - * }); - * ``` - */ - handle: propTypes.string, - - /** - * `cancel` specifies a selector to be used to prevent drag initialization. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return( - * - *
- *
You can't drag from here
- *
Dragging here works fine
- *
- *
- * ); - * } - * }); - * ``` - */ - cancel: propTypes.string, - - /** - * Called when dragging starts. - * If this function returns the boolean false, dragging will be canceled. - */ - onStart: propTypes.func, - - /** - * Called while dragging. - * If this function returns the boolean false, dragging will be canceled. - */ - onDrag: propTypes.func, - - /** - * Called when dragging stops. - * If this function returns the boolean false, the drag will remain active. - */ - onStop: propTypes.func, - - /** - * A workaround option which can be passed if onMouseDown needs to be accessed, - * since it'll always be blocked (as there is internal use of onMouseDown) - */ - onMouseDown: propTypes.func, - - /** - * `scale`, if set, applies scaling while dragging an element - */ - scale: propTypes.number, - - /** - * These properties should be defined on the child, not here. - */ - className: dontSetMe, - style: dontSetMe, - transform: dontSetMe -}); - -_defineProperty$1(DraggableCore, "defaultProps", { - allowAnyClick: false, - // by default only accept left click - cancel: null, - disabled: false, - enableUserSelectHack: true, - offsetParent: null, - handle: null, - grid: null, - transform: null, - onStart: function () {}, - onDrag: function () {}, - onStop: function () {}, - onMouseDown: function () {}, - scale: 1 -}); - -function _extends$1() { _extends$1 = 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$1.apply(this, arguments); } - -function _defineProperty$2(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; } -/*:: import type {DraggableEventHandler} from './utils/types';*/ - -/*:: import type {Element as ReactElement} from 'react';*/ - -/*:: type DraggableState = { - dragging: boolean, - dragged: boolean, - x: number, y: number, - slackX: number, slackY: number, - isElementSVG: boolean, - prevPropsPosition: ?ControlPosition, -};*/ - -/*:: export type DraggableProps = { - ...$Exact, - axis: 'both' | 'x' | 'y' | 'none', - bounds: DraggableBounds | string | false, - defaultClassName: string, - defaultClassNameDragging: string, - defaultClassNameDragged: string, - defaultPosition: ControlPosition, - positionOffset: PositionOffsetControlPosition, - position: ControlPosition, - scale: number -};*/ - -// -// Define -// -class Draggable extends React__default.Component -/*:: */ -{ - // React 16.3+ - // Arity (props, state) - static getDerivedStateFromProps({ - position - } - /*: DraggableProps*/ - , { - prevPropsPosition - } - /*: DraggableState*/ - ) { - // Set x/y if a new position is provided in props that is different than the previous. - if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) { - return { - x: position.x, - y: position.y, - prevPropsPosition: { ...position - } - }; - } - - return null; - } - - constructor(props - /*: DraggableProps*/ - ) { - super(props); - - _defineProperty$2(this, "onDragStart", (e, coreData) => { - - const shouldStart = this.props.onStart(e, createDraggableData(this, coreData)); // Kills start event on core as well, so move handlers are never bound. - - if (shouldStart === false) return false; - this.setState({ - dragging: true, - dragged: true - }); - }); - - _defineProperty$2(this, "onDrag", (e, coreData) => { - if (!this.state.dragging) return false; - const uiData = createDraggableData(this, coreData); - const newState - /*: $Shape*/ - = { - x: uiData.x, - y: uiData.y - }; // Keep within bounds. - - if (this.props.bounds) { - // Save original x and y. - const { - x, - y - } = newState; // Add slack to the values used to calculate bound position. This will ensure that if - // we start removing slack, the element won't react to it right away until it's been - // completely removed. - - newState.x += this.state.slackX; - newState.y += this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries. - - const [newStateX, newStateY] = getBoundPosition(this, newState.x, newState.y); - newState.x = newStateX; - newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler. - - newState.slackX = this.state.slackX + (x - newState.x); - newState.slackY = this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect. - - uiData.x = newState.x; - uiData.y = newState.y; - uiData.deltaX = newState.x - this.state.x; - uiData.deltaY = newState.y - this.state.y; - } // Short-circuit if user's callback killed it. - - - const shouldUpdate = this.props.onDrag(e, uiData); - if (shouldUpdate === false) return false; - this.setState(newState); - }); - - _defineProperty$2(this, "onDragStop", (e, coreData) => { - if (!this.state.dragging) return false; // Short-circuit if user's callback killed it. - - const shouldContinue = this.props.onStop(e, createDraggableData(this, coreData)); - if (shouldContinue === false) return false; - const newState - /*: $Shape*/ - = { - dragging: false, - slackX: 0, - slackY: 0 - }; // If this is a controlled component, the result of this operation will be to - // revert back to the old position. We expect a handler on `onDragStop`, at the least. - - const controlled = Boolean(this.props.position); - - if (controlled) { - const { - x, - y - } = this.props.position; - newState.x = x; - newState.y = y; - } - - this.setState(newState); - }); - - this.state = { - // Whether or not we are currently dragging. - dragging: false, - // Whether or not we have been dragged before. - dragged: false, - // Current transform x and y. - x: props.position ? props.position.x : props.defaultPosition.x, - y: props.position ? props.position.y : props.defaultPosition.y, - prevPropsPosition: { ...props.position - }, - // Used for compensating for out-of-bounds drags - slackX: 0, - slackY: 0, - // Can only determine if SVG after mounting - isElementSVG: false - }; - - if (props.position && !(props.onDrag || props.onStop)) { - // eslint-disable-next-line no-console - 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() { - // Check to see if the element passed is an instanceof SVGElement - if (typeof window.SVGElement !== 'undefined' && ReactDOM.findDOMNode(this) instanceof window.SVGElement) { - this.setState({ - isElementSVG: true - }); - } - } - - componentWillUnmount() { - this.setState({ - dragging: false - }); // prevents invariant if unmounted while dragging - } - - render() - /*: ReactElement*/ - { - const { - axis, - bounds, - children, - defaultPosition, - defaultClassName, - defaultClassNameDragging, - defaultClassNameDragged, - position, - positionOffset, - scale, - ...draggableCoreProps - } = this.props; - let style = {}; - let svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging. - - const controlled = Boolean(position); - const draggable = !controlled || this.state.dragging; - const validPosition = position || defaultPosition; - const transformOpts = { - // Set left if horizontal drag is enabled - x: canDragX(this) && draggable ? this.state.x : validPosition.x, - // Set top if vertical drag is enabled - y: canDragY(this) && draggable ? this.state.y : validPosition.y - }; // If this element was SVG, we use the `transform` attribute. - - if (this.state.isElementSVG) { - svgTransform = createSVGTransform(transformOpts, positionOffset); - } else { - // Add a CSS transform to move the element around. This allows us to move the element around - // without worrying about whether or not it is relatively or absolutely positioned. - // If the item you are dragging already has a transform set, wrap it in a so - // has a clean slate. - style = createCSSTransform(transformOpts, positionOffset); - } // Mark with class while dragging - - - const className = classnames(children.props.className || '', defaultClassName, { - [defaultClassNameDragging]: this.state.dragging, - [defaultClassNameDragged]: this.state.dragged - }); // Reuse the child provided - // This makes it flexible to use whatever element is wanted (div, ul, etc) - - return /*#__PURE__*/React__default.createElement(DraggableCore, _extends$1({}, draggableCoreProps, { - onStart: this.onDragStart, - onDrag: this.onDrag, - onStop: this.onDragStop - }), React__default.cloneElement(React__default.Children.only(children), { - className: className, - style: { ...children.props.style, - ...style - }, - transform: svgTransform - })); - } - -} - -_defineProperty$2(Draggable, "displayName", 'Draggable'); - -_defineProperty$2(Draggable, "propTypes", { // Accepts all props accepts. - ...DraggableCore.propTypes, - - /** - * `axis` determines which axis the draggable can move. - * - * Note that all callbacks will still return data as normal. This only - * controls flushing to the DOM. - * - * 'both' allows movement horizontally and vertically. - * 'x' limits movement to horizontal axis. - * 'y' limits movement to vertical axis. - * 'none' limits all movement. - * - * Defaults to 'both'. - */ - axis: propTypes.oneOf(['both', 'x', 'y', 'none']), - - /** - * `bounds` determines the range of movement available to the element. - * Available values are: - * - * 'parent' restricts movement within the Draggable's parent node. - * - * Alternatively, pass an object with the following properties, all of which are optional: - * - * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND} - * - * All values are in px. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
Content
- *
- * ); - * } - * }); - * ``` - */ - bounds: propTypes.oneOfType([propTypes.shape({ - left: propTypes.number, - right: propTypes.number, - top: propTypes.number, - bottom: propTypes.number - }), propTypes.string, propTypes.oneOf([false])]), - defaultClassName: propTypes.string, - defaultClassNameDragging: propTypes.string, - defaultClassNameDragged: propTypes.string, - - /** - * `defaultPosition` specifies the x and y that the dragged item should start at - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
I start with transformX: 25px and transformY: 25px;
- *
- * ); - * } - * }); - * ``` - */ - defaultPosition: propTypes.shape({ - x: propTypes.number, - y: propTypes.number - }), - positionOffset: propTypes.shape({ - x: propTypes.oneOfType([propTypes.number, propTypes.string]), - y: propTypes.oneOfType([propTypes.number, propTypes.string]) - }), - - /** - * `position`, if present, defines the current position of the element. - * - * This is similar to how form elements in React work - if no `position` is supplied, the component - * is uncontrolled. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
I start with transformX: 25px and transformY: 25px;
- *
- * ); - * } - * }); - * ``` - */ - position: propTypes.shape({ - x: propTypes.number, - y: propTypes.number - }), - - /** - * These properties should be defined on the child, not here. - */ - className: dontSetMe, - style: dontSetMe, - transform: dontSetMe -}); - -_defineProperty$2(Draggable, "defaultProps", { ...DraggableCore.defaultProps, - axis: 'both', - bounds: false, - defaultClassName: 'react-draggable', - defaultClassNameDragging: 'react-draggable-dragging', - defaultClassNameDragged: 'react-draggable-dragged', - defaultPosition: { - x: 0, - y: 0 - }, - position: null, - scale: 1 -}); - -/** - * The nodes selection rectangle gets displayed when a user - * made a selectio with on or several nodes - */ -function getStartPositions(nodes) { - var startPositions = {}; - return nodes.reduce(function (res, node) { - var startPosition = { - x: node.__rg.position.x || node.position.x, - y: node.__rg.position.y || node.position.y, - }; - res[node.id] = startPosition; - return res; - }, startPositions); -} -var NodesSelection = React.memo(function () { - var _a = React.useState({ x: 0, y: 0 }), offset = _a[0], setOffset = _a[1]; - var _b = React.useState({}), startPositions = _b[0], setStartPositions = _b[1]; - var state = useStoreState$1(function (s) { return ({ - transform: s.transform, - selectedNodesBbox: s.selectedNodesBbox, - selectedElements: s.selectedElements, - snapToGrid: s.snapToGrid, - snapGrid: s.snapGrid, - nodes: s.nodes, - }); }); - var updateNodePos = useStoreActions$1(function (a) { return a.updateNodePos; }); - var _c = state.transform, tx = _c[0], ty = _c[1], tScale = _c[2]; - var position = state.selectedNodesBbox; - var grid = (state.snapToGrid ? state.snapGrid : [1, 1]); - var onStart = function (evt) { - var scaledClient = { - x: evt.clientX / tScale, - y: evt.clientY / tScale, - }; - var offsetX = scaledClient.x - position.x - tx; - var offsetY = scaledClient.y - position.y - ty; - var selectedNodes = state.selectedElements.filter(isNode).map(function (selectedNode) { return state.nodes.find(function (node) { return node.id === selectedNode.id; }); }); - var nextStartPositions = getStartPositions(selectedNodes); - if (nextStartPositions) { - setOffset({ x: offsetX, y: offsetY }); - setStartPositions(nextStartPositions); - } - }; - var onDrag = function (evt) { - var scaledClient = { - x: evt.clientX / tScale, - y: evt.clientY / tScale, - }; - state.selectedElements.filter(isNode).forEach(function (node) { - var pos = { - x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - tx, - y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - ty, - }; - updateNodePos({ id: node.id, pos: pos }); - }); - }; - return (React__default.createElement("div", { className: "react-flow__nodesselection", style: { - transform: "translate(" + tx + "px," + ty + "px) scale(" + tScale + ")", - } }, - React__default.createElement(Draggable, { scale: tScale, grid: grid, onStart: function (evt) { return onStart(evt); }, onDrag: function (evt) { return onDrag(evt); } }, - React__default.createElement("div", { className: "react-flow__nodesselection-rect", style: { - width: state.selectedNodesBbox.width, - height: state.selectedNodesBbox.height, - top: state.selectedNodesBbox.y, - left: state.selectedNodesBbox.x, - } })))); -}); - -var baseStyles = { - position: 'absolute', - top: 0, - left: 0, -}; -var createGridLines = function (width, height, xOffset, yOffset, gap) { - var lineCountX = Math.ceil(width / gap) + 1; - var lineCountY = Math.ceil(height / gap) + 1; - var xValues = Array.from({ length: lineCountX }, function (_, i) { return "M" + (i * gap + xOffset) + " 0 V" + height; }); - var yValues = Array.from({ length: lineCountY }, function (_, i) { return "M0 " + (i * gap + yOffset) + " H" + width; }); - return __spreadArrays(xValues, yValues).join(' '); -}; -var createGridDots = function (width, height, xOffset, yOffset, gap, size) { - var lineCountX = Math.ceil(width / gap) + 1; - var lineCountY = Math.ceil(height / gap) + 1; - var values = Array.from({ length: lineCountX }, function (_, col) { - var x = col * gap + xOffset; - return Array.from({ length: lineCountY }, function (_, row) { - var y = row * gap + yOffset; - return "M" + x + " " + (y - - size) + " l" + size + " " + size + " l" + -size + " " + size + " l" + -size + " " + -size + "z"; - }).join(' '); - }); - return values.join(' '); -}; -var Grid = React.memo(function (_a) { - var _b = _a.gap, gap = _b === void 0 ? 24 : _b, _c = _a.color, color = _c === void 0 ? '#aaa' : _c, _d = _a.size, size = _d === void 0 ? 0.5 : _d, _e = _a.style, style = _e === void 0 ? {} : _e, _f = _a.className, className = _f === void 0 ? '' : _f, _g = _a.backgroundType, backgroundType = _g === void 0 ? GridType.Dots : _g; - var _h = useStoreState$1(function (s) { return s; }), width = _h.width, height = _h.height, _j = _h.transform, x = _j[0], y = _j[1], scale = _j[2]; - var gridClasses = classnames('react-flow__grid', className); - var scaledGap = gap * scale; - var xOffset = x % scaledGap; - var yOffset = y % scaledGap; - var isLines = backgroundType === 'lines'; - var path = isLines - ? createGridLines(width, height, xOffset, yOffset, scaledGap) - : createGridDots(width, height, xOffset, yOffset, scaledGap, size); - var fill = isLines ? 'none' : color; - var stroke = isLines ? color : 'none'; - return (React__default.createElement("svg", { width: width, height: height, style: __assign(__assign({}, baseStyles), style), className: gridClasses }, - React__default.createElement("path", { fill: fill, stroke: stroke, strokeWidth: size, d: path }))); -}); -Grid.displayName = 'Grid'; - -var useKeyPress = (function (keyCode) { - var _a = React.useState(false), keyPressed = _a[0], setKeyPressed = _a[1]; - function downHandler(evt) { - if (evt.keyCode === keyCode && !isInputDOMNode(evt)) { - setKeyPressed(true); - } - } - var upHandler = function (evt) { - if (evt.keyCode === keyCode && !isInputDOMNode(evt)) { - setKeyPressed(false); - } - }; - React.useEffect(function () { - window.addEventListener('keydown', downHandler); - window.addEventListener('keyup', upHandler); - return function () { - window.removeEventListener('keydown', downHandler); - window.removeEventListener('keyup', upHandler); - }; - }, []); - return keyPressed; -}); - -var d3ZoomInstance = zoom() - .scaleExtent([0.5, 2]) - .filter(function () { return !event.button; }); -var useD3Zoom = (function (zoomPane, onMove, shiftPressed) { - var state = useStoreState$1(function (s) { return ({ - transform: s.transform, - d3Selection: s.d3Selection, - d3Zoom: s.d3Zoom, - }); }); - var initD3 = useStoreActions$1(function (actions) { return actions.initD3; }); - var updateTransform = useStoreActions$1(function (actions) { return actions.updateTransform; }); - React.useEffect(function () { - if (zoomPane.current) { - var selection = select(zoomPane.current).call(d3ZoomInstance); - initD3({ zoom: d3ZoomInstance, selection: selection }); - } - }, []); - React.useEffect(function () { - if (shiftPressed) { - d3ZoomInstance.on('zoom', null); - } - else { - d3ZoomInstance.on('zoom', function () { - if (event.sourceEvent && event.sourceEvent.target !== zoomPane.current) { - return; - } - updateTransform(event.transform); - onMove(); - }); - if (state.d3Selection && state.d3Zoom) { - // we need to restore the graph transform otherwise d3 zoom transform and graph transform are not synced - var graphTransform = identity$1 - .translate(state.transform[0], state.transform[1]) - .scale(state.transform[2]); - state.d3Selection.call(state.d3Zoom.transform, graphTransform); - } - } - return function () { - d3ZoomInstance.on('zoom', null); - }; - }, [shiftPressed]); -}); - -var useGlobalKeyHandler = (function (_a) { - var deleteKeyCode = _a.deleteKeyCode, onElementsRemove = _a.onElementsRemove; - var state = useStoreState$1(function (s) { return ({ - selectedElements: s.selectedElements, - edges: s.edges, - }); }); - var setNodesSelection = useStoreActions$1(function (a) { return a.setNodesSelection; }); - var deleteKeyPressed = useKeyPress(deleteKeyCode); - React.useEffect(function () { - if (deleteKeyPressed && state.selectedElements.length) { - var elementsToRemove = state.selectedElements; - // we also want to remove the edges if only one node is selected - if (state.selectedElements.length === 1 && - !isEdge(state.selectedElements[0])) { - var node = state.selectedElements[0]; - var connectedEdges = getConnectedEdges([node], state.edges); - elementsToRemove = __spreadArrays(state.selectedElements, connectedEdges); - } - onElementsRemove(elementsToRemove); - setNodesSelection({ isActive: false }); - } - }, [deleteKeyPressed]); -}); - -var useElementUpdater = function (elements) { - var state = useStoreState$1(function (s) { return ({ - nodes: s.nodes, - edges: s.edges, - transform: s.transform, - snapToGrid: s.snapToGrid, - snapGrid: s.snapGrid, - }); }); - var setNodes = useStoreActions$1(function (a) { return a.setNodes; }); - var setEdges = useStoreActions$1(function (a) { return a.setEdges; }); - React.useEffect(function () { - var nodes = elements.filter(isNode); - var edges = elements - .filter(isEdge) - .map(function (e) { - return parseElement(e, state.transform, state.snapToGrid, state.snapGrid); - }); - var nextNodes = nodes.map(function (propNode) { - var existingNode = state.nodes.find(function (n) { return n.id === propNode.id; }); - if (existingNode) { - var data = !fastDeepEqual(existingNode.data, propNode.data) - ? __assign(__assign({}, existingNode.data), propNode.data) : existingNode.data; - return __assign(__assign({}, existingNode), { data: data }); - } - return parseElement(propNode, state.transform, state.snapToGrid, state.snapGrid); - }); - var nodesChanged = !fastDeepEqual(state.nodes, nextNodes); - var edgesChanged = !fastDeepEqual(state.edges, edges); - if (nodesChanged) { - setNodes(nextNodes); - } - if (edgesChanged) { - setEdges(edges); - } - }); -}; - -var GraphView = React.memo(function (_a) { - var nodeTypes = _a.nodeTypes, edgeTypes = _a.edgeTypes, onMove = _a.onMove, onLoad = _a.onLoad, onElementClick = _a.onElementClick, onNodeDragStop = _a.onNodeDragStop, connectionLineType = _a.connectionLineType, connectionLineStyle = _a.connectionLineStyle, selectionKeyCode = _a.selectionKeyCode, onElementsRemove = _a.onElementsRemove, deleteKeyCode = _a.deleteKeyCode, elements = _a.elements, showBackground = _a.showBackground, backgroundGap = _a.backgroundGap, backgroundColor = _a.backgroundColor, backgroundType = _a.backgroundType, onConnect = _a.onConnect, snapToGrid = _a.snapToGrid, snapGrid = _a.snapGrid, onlyRenderVisibleNodes = _a.onlyRenderVisibleNodes, isInteractive = _a.isInteractive; - var zoomPane = React.useRef(null); - var rendererNode = React.useRef(null); - var state = useStoreState$1(function (s) { return ({ - width: s.width, - height: s.height, - nodes: s.nodes, - edges: s.edges, - d3Initialised: s.d3Initialised, - nodesSelectionActive: s.nodesSelectionActive, - }); }); - var updateSize = useStoreActions$1(function (actions) { return actions.updateSize; }); - var setNodesSelection = useStoreActions$1(function (actions) { return actions.setNodesSelection; }); - var setOnConnect = useStoreActions$1(function (a) { return a.setOnConnect; }); - var setSnapGrid = useStoreActions$1(function (actions) { return actions.setSnapGrid; }); - var setInteractive = useStoreActions$1(function (actions) { return actions.setInteractive; }); - var selectionKeyPressed = useKeyPress(selectionKeyCode); - var rendererClasses = classnames('react-flow__renderer', { 'is-interactive': isInteractive }); - var onZoomPaneClick = function () { return setNodesSelection({ isActive: false }); }; - var updateDimensions = function () { - if (!rendererNode.current) { - return; - } - var size = getDimensions(rendererNode.current); - updateSize(size); - }; - React.useEffect(function () { - updateDimensions(); - setOnConnect(onConnect); - window.onresize = updateDimensions; - return function () { - window.onresize = null; - }; - }, []); - useD3Zoom(zoomPane, onMove, selectionKeyPressed); - React.useEffect(function () { - if (state.d3Initialised) { - onLoad({ - fitView: fitView, - zoomIn: zoomIn, - zoomOut: zoomOut, - }); - } - }, [state.d3Initialised]); - React.useEffect(function () { - setSnapGrid({ snapToGrid: snapToGrid, snapGrid: snapGrid }); - }, [snapToGrid]); - React.useEffect(function () { - setInteractive(isInteractive); - }, [isInteractive]); - useGlobalKeyHandler({ onElementsRemove: onElementsRemove, deleteKeyCode: deleteKeyCode }); - useElementUpdater(elements); - return (React__default.createElement("div", { className: rendererClasses, ref: rendererNode }, - showBackground && (React__default.createElement(Grid, { gap: backgroundGap, color: backgroundColor, backgroundType: backgroundType })), - React__default.createElement(NodeRenderer, { nodeTypes: nodeTypes, onElementClick: onElementClick, onNodeDragStop: onNodeDragStop, onlyRenderVisibleNodes: onlyRenderVisibleNodes }), - React__default.createElement(EdgeRenderer, { width: state.width, height: state.height, edgeTypes: edgeTypes, onElementClick: onElementClick, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle }), - selectionKeyPressed && React__default.createElement(UserSelection, { isInteractive: isInteractive }), - state.nodesSelectionActive && React__default.createElement(NodesSelection, null), - React__default.createElement("div", { className: "react-flow__zoompane", onClick: onZoomPaneClick, ref: zoomPane }))); -}); -GraphView.displayName = 'GraphView'; - -function onMouseDown(evt, nodeId, setSourceId, setPosition, onConnect, isTarget, isValidConnection) { - var reactFlowNode = document.querySelector('.react-flow'); - if (!reactFlowNode) { - return; - } - var containerBounds = reactFlowNode.getBoundingClientRect(); - var recentHoveredHandle; - setPosition({ - x: evt.clientX - containerBounds.left, - y: evt.clientY - containerBounds.top, - }); - setSourceId(nodeId); - function resetRecentHandle() { - if (!recentHoveredHandle) { - return; - } - recentHoveredHandle.classList.remove('valid'); - recentHoveredHandle.classList.remove('connecting'); - } - // checks if element below mouse is a handle and returns connection in form of an object { source: 123, target: 312 } - function checkElementBelowIsValid(evt) { - var elementBelow = document.elementFromPoint(evt.clientX, evt.clientY); - var result = { - elementBelow: elementBelow, - isValid: false, - connection: { source: null, target: null }, - isHoveringHandle: false, - }; - if (elementBelow && (elementBelow.classList.contains('target') || elementBelow.classList.contains('source'))) { - var connection = { source: null, target: null }; - if (isTarget) { - var sourceId = elementBelow.getAttribute('data-nodeid'); - connection = { source: sourceId, target: nodeId }; - } - else { - var targetId = elementBelow.getAttribute('data-nodeid'); - connection = { source: nodeId, target: targetId }; - } - var isValid = isValidConnection(connection); - result.connection = connection; - result.isValid = isValid; - result.isHoveringHandle = true; - } - return result; - } - function onMouseMove(evt) { - setPosition({ - x: evt.clientX - containerBounds.left, - y: evt.clientY - containerBounds.top, - }); - var _a = checkElementBelowIsValid(evt), connection = _a.connection, elementBelow = _a.elementBelow, isValid = _a.isValid, isHoveringHandle = _a.isHoveringHandle; - if (!isHoveringHandle) { - return resetRecentHandle(); - } - var isOwnHandle = connection.source === connection.target; - if (!isOwnHandle && elementBelow) { - recentHoveredHandle = elementBelow; - elementBelow.classList.add('connecting'); - elementBelow.classList.toggle('valid', isValid); - } - } - function onMouseUp(evt) { - var _a = checkElementBelowIsValid(evt), connection = _a.connection, isValid = _a.isValid; - if (isValid) { - onConnect(connection); - } - resetRecentHandle(); - setSourceId(null); - document.removeEventListener('mousemove', onMouseMove); - document.removeEventListener('mouseup', onMouseUp); - } - document.addEventListener('mousemove', onMouseMove); - document.addEventListener('mouseup', onMouseUp); -} -var BaseHandle = React.memo(function (_a) { - var type = _a.type, nodeId = _a.nodeId, onConnect = _a.onConnect, position = _a.position, setSourceId = _a.setSourceId, setPosition = _a.setPosition, className = _a.className, _b = _a.id, id = _b === void 0 ? false : _b, isValidConnection = _a.isValidConnection, rest = __rest(_a, ["type", "nodeId", "onConnect", "position", "setSourceId", "setPosition", "className", "id", "isValidConnection"]); - var isTarget = type === 'target'; - var handleClasses = classnames('react-flow__handle', 'nodrag', className, position, { - source: !isTarget, - target: isTarget, - }); - var nodeIdWithHandleId = id ? nodeId + "__" + id : nodeId; - return (React__default.createElement("div", __assign({ "data-nodeid": nodeIdWithHandleId, "data-handlepos": position, className: handleClasses, onMouseDown: function (evt) { - return onMouseDown(evt, nodeIdWithHandleId, setSourceId, setPosition, onConnect, isTarget, isValidConnection); - } }, rest))); -}); -BaseHandle.displayName = 'BaseHandle'; - -var NodeIdContext = React.createContext(null); -var Provider = NodeIdContext.Provider; -var Consumer = NodeIdContext.Consumer; - -var Handle = React.memo(function (_a) { - var _b = _a.onConnect, onConnect = _b === void 0 ? function (_) { } : _b, _c = _a.type, type = _c === void 0 ? 'source' : _c, _d = _a.position, position = _d === void 0 ? Position.Top : _d, _e = _a.isValidConnection, isValidConnection = _e === void 0 ? function () { return true; } : _e, rest = __rest(_a, ["onConnect", "type", "position", "isValidConnection"]); - var nodeId = React.useContext(NodeIdContext); - var _f = useStoreActions$1(function (a) { return ({ - setPosition: a.setConnectionPosition, - setSourceId: a.setConnectionSourceId, - }); }), setPosition = _f.setPosition, setSourceId = _f.setSourceId; - var onConnectAction = useStoreState$1(function (s) { return s.onConnect; }); - var onConnectExtended = function (params) { - onConnectAction(params); - onConnect(params); - }; - return (React__default.createElement(BaseHandle, __assign({ nodeId: nodeId, setPosition: setPosition, setSourceId: setSourceId, onConnect: onConnectExtended, type: type, position: position, isValidConnection: isValidConnection }, rest))); -}); -Handle.displayName = 'Handle'; - -var nodeStyles = { - background: '#ff6060', - padding: 10, - borderRadius: 5, - width: 150, -}; -var DefaultNode = (function (_a) { - var data = _a.data, _b = _a.targetPosition, targetPosition = _b === void 0 ? Position.Top : _b, _c = _a.sourcePosition, sourcePosition = _c === void 0 ? Position.Bottom : _c, style = _a.style; - return (React__default.createElement("div", { style: __assign(__assign({}, nodeStyles), style) }, - React__default.createElement(Handle, { type: "target", position: targetPosition }), - data.label, - React__default.createElement(Handle, { type: "source", position: sourcePosition }))); -}); - -var nodeStyles$1 = { - background: '#9999ff', - padding: 10, - borderRadius: 5, - width: 150, -}; -var InputNode = (function (_a) { - var data = _a.data, style = _a.style, _b = _a.sourcePosition, sourcePosition = _b === void 0 ? Position.Bottom : _b; - return (React__default.createElement("div", { style: __assign(__assign({}, nodeStyles$1), style) }, - data.label, - React__default.createElement(Handle, { type: "source", position: sourcePosition }))); -}); - -var nodeStyles$2 = { - background: '#55dd99', - padding: 10, - borderRadius: 5, - width: 150, -}; -var OutputNode = (function (_a) { - var data = _a.data, style = _a.style, _b = _a.targetPosition, targetPosition = _b === void 0 ? Position.Top : _b; - return (React__default.createElement("div", { style: __assign(__assign({}, nodeStyles$2), style) }, - React__default.createElement(Handle, { type: "target", position: targetPosition }), - data.label)); -}); - -var ContentRect_1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -var ContentRect = function (target) { - if ('getBBox' in target) { - var box = target.getBBox(); - return Object.freeze({ - height: box.height, - left: 0, - top: 0, - width: box.width, - }); - } - else { // if (target instanceof HTMLElement) { // also includes all other non-SVGGraphicsElements - var styles = window.getComputedStyle(target); - return Object.freeze({ - height: parseFloat(styles.height || '0'), - left: parseFloat(styles.paddingLeft || '0'), - top: parseFloat(styles.paddingTop || '0'), - width: parseFloat(styles.width || '0'), - }); - } -}; -exports.ContentRect = ContentRect; - -}); - -unwrapExports(ContentRect_1); -var ContentRect_2 = ContentRect_1.ContentRect; - -var ResizeObservation_1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); - -var ResizeObservation = /** @class */ (function () { - function ResizeObservation(target) { - this.target = target; - this.$$broadcastWidth = this.$$broadcastHeight = 0; - } - Object.defineProperty(ResizeObservation.prototype, "broadcastWidth", { - get: function () { - return this.$$broadcastWidth; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ResizeObservation.prototype, "broadcastHeight", { - get: function () { - return this.$$broadcastHeight; - }, - enumerable: true, - configurable: true - }); - ResizeObservation.prototype.isActive = function () { - var cr = ContentRect_1.ContentRect(this.target); - return !!cr - && (cr.width !== this.broadcastWidth - || cr.height !== this.broadcastHeight); - }; - return ResizeObservation; -}()); -exports.ResizeObservation = ResizeObservation; - -}); - -unwrapExports(ResizeObservation_1); -var ResizeObservation_2 = ResizeObservation_1.ResizeObservation; - -var ResizeObserverEntry_1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); - -var ResizeObserverEntry = /** @class */ (function () { - function ResizeObserverEntry(target) { - this.target = target; - this.contentRect = ContentRect_1.ContentRect(target); - } - return ResizeObserverEntry; -}()); -exports.ResizeObserverEntry = ResizeObserverEntry; - -}); - -unwrapExports(ResizeObserverEntry_1); -var ResizeObserverEntry_2 = ResizeObserverEntry_1.ResizeObserverEntry; - -var ResizeObserver_1 = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); - - -var resizeObservers = []; -var ResizeObserver = /** @class */ (function () { - function ResizeObserver(callback) { - /** @internal */ - this.$$observationTargets = []; - /** @internal */ - this.$$activeTargets = []; - /** @internal */ - this.$$skippedTargets = []; - var message = callbackGuard(callback); - if (message) { - throw TypeError(message); - } - this.$$callback = callback; - resizeObservers.push(this); - } - ResizeObserver.prototype.observe = function (target) { - var message = targetGuard('observe', target); - if (message) { - throw TypeError(message); - } - var index = findTargetIndex(this.$$observationTargets, target); - if (index > 0) { - return; - } - this.$$observationTargets.push(new ResizeObservation_1.ResizeObservation(target)); - startLoop(); - }; - ResizeObserver.prototype.unobserve = function (target) { - var message = targetGuard('unobserve', target); - if (message) { - throw TypeError(message); - } - var index = findTargetIndex(this.$$observationTargets, target); - if (index < 0) { - return; - } - this.$$observationTargets.splice(index, 1); - checkStopLoop(); - }; - ResizeObserver.prototype.disconnect = function () { - this.$$observationTargets = []; - this.$$activeTargets = []; - }; - return ResizeObserver; -}()); -exports.ResizeObserver = ResizeObserver; -function callbackGuard(callback) { - if (typeof (callback) === 'undefined') { - return "Failed to construct 'ResizeObserver': 1 argument required, but only 0 present."; - } - if (typeof (callback) !== 'function') { - return "Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function."; - } -} -function targetGuard(functionName, target) { - if (typeof (target) === 'undefined') { - return "Failed to execute '" + functionName + "' on 'ResizeObserver': 1 argument required, but only 0 present."; - } - if (!(target instanceof window.Element)) { - return "Failed to execute '" + functionName + "' on 'ResizeObserver': parameter 1 is not of type 'Element'."; - } -} -function findTargetIndex(collection, target) { - for (var index = 0; index < collection.length; index += 1) { - if (collection[index].target === target) { - return index; - } - } - return -1; -} -var gatherActiveObservationsAtDepth = function (depth) { - resizeObservers.forEach(function (ro) { - ro.$$activeTargets = []; - ro.$$skippedTargets = []; - ro.$$observationTargets.forEach(function (ot) { - if (ot.isActive()) { - var targetDepth = calculateDepthForNode(ot.target); - if (targetDepth > depth) { - ro.$$activeTargets.push(ot); - } - else { - ro.$$skippedTargets.push(ot); - } - } - }); - }); -}; -var hasActiveObservations = function () { - return resizeObservers.some(function (ro) { return !!ro.$$activeTargets.length; }); -}; -var hasSkippedObservations = function () { - return resizeObservers.some(function (ro) { return !!ro.$$skippedTargets.length; }); -}; -var broadcastActiveObservations = function () { - var shallowestTargetDepth = Infinity; - resizeObservers.forEach(function (ro) { - if (!ro.$$activeTargets.length) { - return; - } - var entries = []; - ro.$$activeTargets.forEach(function (obs) { - var entry = new ResizeObserverEntry_1.ResizeObserverEntry(obs.target); - entries.push(entry); - obs.$$broadcastWidth = entry.contentRect.width; - obs.$$broadcastHeight = entry.contentRect.height; - var targetDepth = calculateDepthForNode(obs.target); - if (targetDepth < shallowestTargetDepth) { - shallowestTargetDepth = targetDepth; - } - }); - ro.$$callback(entries, ro); - ro.$$activeTargets = []; - }); - return shallowestTargetDepth; -}; -var deliverResizeLoopErrorNotification = function () { - var errorEvent = new window.ErrorEvent('ResizeLoopError', { - message: 'ResizeObserver loop completed with undelivered notifications.', - }); - window.dispatchEvent(errorEvent); -}; -var calculateDepthForNode = function (target) { - var depth = 0; - while (target.parentNode) { - target = target.parentNode; - depth += 1; - } - return depth; -}; -var notificationIteration = function () { - var depth = 0; - gatherActiveObservationsAtDepth(depth); - while (hasActiveObservations()) { - depth = broadcastActiveObservations(); - gatherActiveObservationsAtDepth(depth); - } - if (hasSkippedObservations()) { - deliverResizeLoopErrorNotification(); - } -}; -var animationFrameCancelToken; -var startLoop = function () { - if (animationFrameCancelToken) - return; - runLoop(); -}; -var runLoop = function () { - animationFrameCancelToken = window.requestAnimationFrame(function () { - notificationIteration(); - runLoop(); - }); -}; -var checkStopLoop = function () { - if (animationFrameCancelToken && !resizeObservers.some(function (ro) { return !!ro.$$observationTargets.length; })) { - window.cancelAnimationFrame(animationFrameCancelToken); - animationFrameCancelToken = undefined; - } -}; -var install = function () { - return window.ResizeObserver = ResizeObserver; -}; -exports.install = install; - -}); - -unwrapExports(ResizeObserver_1); -var ResizeObserver_2 = ResizeObserver_1.ResizeObserver; -var ResizeObserver_3 = ResizeObserver_1.install; - -var getMouseEvent = function (evt) { - return typeof TouchEvent !== 'undefined' && evt instanceof TouchEvent ? evt.touches[0] : evt; -}; -var onStart = function (evt, onClick, id, type, data, setOffset, transform, position) { - var startEvt = getMouseEvent(evt); - var scaledClient = { - x: startEvt.clientX * (1 / transform[2]), - y: startEvt.clientY * (1 / transform[2]), - }; - var offsetX = scaledClient.x - position.x - transform[0]; - var offsetY = scaledClient.y - position.y - transform[1]; - var node = { id: id, type: type, position: position, data: data }; - store.dispatch.setSelectedElements({ id: id, type: type }); - setOffset({ x: offsetX, y: offsetY }); - onClick(node); -}; -var onDrag = function (evt, setDragging, id, offset, transform) { - var dragEvt = getMouseEvent(evt); - var scaledClient = { - x: dragEvt.clientX * (1 / transform[2]), - y: dragEvt.clientY * (1 / transform[2]), - }; - setDragging(true); - store.dispatch.updateNodePos({ - id: id, - pos: { - x: scaledClient.x - transform[0] - offset.x, - y: scaledClient.y - transform[1] - offset.y, - }, - }); -}; -var onStop = function (onNodeDragStop, isDragging, setDragging, id, type, position, data) { - if (isDragging) { - setDragging(false); - onNodeDragStop({ - id: id, - type: type, - position: position, - data: data, - }); - } -}; -var wrapNode = (function (NodeComponent) { - var NodeWrapper = React.memo(function (_a) { - var id = _a.id, type = _a.type, data = _a.data, transform = _a.transform, xPos = _a.xPos, yPos = _a.yPos, selected = _a.selected, onClick = _a.onClick, onNodeDragStop = _a.onNodeDragStop, style = _a.style, isInteractive = _a.isInteractive, sourcePosition = _a.sourcePosition, targetPosition = _a.targetPosition; - var nodeElement = React.useRef(null); - var _b = React.useState({ x: 0, y: 0 }), offset = _b[0], setOffset = _b[1]; - var _c = React.useState(false), isDragging = _c[0], setDragging = _c[1]; - var position = { x: xPos, y: yPos }; - var nodeClasses = classnames('react-flow__node', { selected: selected }); - var nodeStyle = { - zIndex: selected ? 10 : 3, - transform: "translate(" + xPos + "px," + yPos + "px)", - }; - var updateNode = function () { - if (!nodeElement.current) { - return; - } - store.dispatch.updateNodeDimensions({ id: id, nodeElement: nodeElement.current }); - }; - React.useEffect(function () { - if (nodeElement.current) { - updateNode(); - var resizeObserver_1 = new ResizeObserver_2(function (entries) { - for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) { - var _1 = entries_1[_i]; - updateNode(); - } - }); - resizeObserver_1.observe(nodeElement.current); - return function () { - if (resizeObserver_1 && nodeElement.current) { - resizeObserver_1.unobserve(nodeElement.current); - } - }; - } - return; - }, []); - return (React__default.createElement(DraggableCore, { onStart: function (evt) { return onStart(evt, onClick, id, type, data, setOffset, transform, position); }, onDrag: function (evt) { return onDrag(evt, setDragging, id, offset, transform); }, onStop: function () { return onStop(onNodeDragStop, isDragging, setDragging, id, type, position, data); }, scale: transform[2], disabled: !isInteractive, cancel: ".nodrag" }, - React__default.createElement("div", { className: nodeClasses, ref: nodeElement, style: nodeStyle }, - React__default.createElement(Provider, { value: id }, - React__default.createElement(NodeComponent, { id: id, data: data, type: type, style: style, selected: selected, sourcePosition: sourcePosition, targetPosition: targetPosition }))))); - }); - NodeWrapper.displayName = 'NodeWrapper'; - return NodeWrapper; -}); - -function createNodeTypes(nodeTypes) { - var standardTypes = { - input: wrapNode((nodeTypes.input || InputNode)), - default: wrapNode((nodeTypes.default || DefaultNode)), - output: wrapNode((nodeTypes.output || OutputNode)), - }; - var wrappedTypes = {}; - var specialTypes = Object.keys(nodeTypes) - .filter(function (k) { return !['input', 'default', 'output'].includes(k); }) - .reduce(function (res, key) { - res[key] = wrapNode((nodeTypes[key] || DefaultNode)); - return res; - }, wrappedTypes); - return __assign(__assign({}, standardTypes), specialTypes); -} - -var BezierEdge = React.memo(function (_a) { - var sourceX = _a.sourceX, sourceY = _a.sourceY, targetX = _a.targetX, targetY = _a.targetY, _b = _a.sourcePosition, sourcePosition = _b === void 0 ? Position.Bottom : _b, _c = _a.targetPosition, targetPosition = _c === void 0 ? Position.Top : _c, _d = _a.style, style = _d === void 0 ? {} : _d; - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - var dAttr = "M" + sourceX + "," + sourceY + " C" + sourceX + "," + centerY + " " + targetX + "," + centerY + " " + targetX + "," + targetY; - var leftAndRight = [Position.Left, Position.Right]; - if (leftAndRight.includes(sourcePosition) && leftAndRight.includes(targetPosition)) { - var xOffset = Math.abs(targetX - sourceX) / 2; - var centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset; - dAttr = "M" + sourceX + "," + sourceY + " C" + centerX + "," + sourceY + " " + centerX + "," + targetY + " " + targetX + "," + targetY; - } - else if (leftAndRight.includes(sourcePosition) || leftAndRight.includes(targetPosition)) { - dAttr = "M" + sourceX + "," + sourceY + " C" + sourceX + "," + targetY + " " + sourceX + "," + targetY + " " + targetX + "," + targetY; - } - return React__default.createElement("path", __assign({}, style, { d: dAttr })); -}); - -var StraightEdge = React.memo(function (_a) { - var sourceX = _a.sourceX, sourceY = _a.sourceY, targetX = _a.targetX, targetY = _a.targetY, _b = _a.style, style = _b === void 0 ? {} : _b; - return (React__default.createElement("path", __assign({}, style, { d: "M " + sourceX + "," + sourceY + "L " + targetX + "," + targetY }))); -}); - -var StepEdge = React.memo(function (_a) { - var sourceX = _a.sourceX, sourceY = _a.sourceY, targetX = _a.targetX, targetY = _a.targetY, _b = _a.style, style = _b === void 0 ? {} : _b; - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - return (React__default.createElement("path", __assign({}, style, { d: "M " + sourceX + "," + sourceY + "L " + sourceX + "," + centerY + "L " + targetX + "," + centerY + "L " + targetX + "," + targetY }))); -}); - -var wrapEdge = (function (EdgeComponent) { - var EdgeWrapper = React.memo(function (_a) { - var id = _a.id, source = _a.source, target = _a.target, type = _a.type, animated = _a.animated, selected = _a.selected, onClick = _a.onClick, isInteractive = _a.isInteractive, rest = __rest(_a, ["id", "source", "target", "type", "animated", "selected", "onClick", "isInteractive"]); - var edgeClasses = classnames('react-flow__edge', { selected: selected, animated: animated }); - var onEdgeClick = function () { - if (!isInteractive) { - return; - } - store.dispatch.setSelectedElements({ id: id, source: source, target: target }); - onClick({ id: id, source: source, target: target, type: type }); - }; - return (React__default.createElement("g", { className: edgeClasses, onClick: onEdgeClick }, - React__default.createElement(EdgeComponent, __assign({ id: id, source: source, target: target, type: type, animated: animated, selected: selected, onClick: onClick }, rest)))); - }); - EdgeWrapper.displayName = 'EdgeWrapper'; - return EdgeWrapper; -}); - -function createEdgeTypes(edgeTypes) { - var standardTypes = { - default: wrapEdge((edgeTypes.default || BezierEdge)), - straight: wrapEdge((edgeTypes.bezier || StraightEdge)), - }; - var wrappedTypes = {}; - var specialTypes = Object.keys(edgeTypes) - .filter(function (k) { return !['default', 'bezier'].includes(k); }) - .reduce(function (res, key) { - res[key] = wrapEdge((edgeTypes[key] || BezierEdge)); - return res; - }, wrappedTypes); - return __assign(__assign({}, standardTypes), specialTypes); -} - -function styleInject(css, ref) { - if ( ref === void 0 ) ref = {}; - var insertAt = ref.insertAt; - - if (!css || typeof document === 'undefined') { return; } - - var head = document.head || document.getElementsByTagName('head')[0]; - var style = document.createElement('style'); - style.type = 'text/css'; - - if (insertAt === 'top') { - if (head.firstChild) { - head.insertBefore(style, head.firstChild); - } else { - head.appendChild(style); - } - } else { - head.appendChild(style); - } - - if (style.styleSheet) { - style.styleSheet.cssText = css; - } else { - style.appendChild(document.createTextNode(css)); - } -} - -var css_248z = ".react-flow {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n\n.react-flow__renderer {\n width: 100%;\n height: 100%;\n position: absolute;\n}\n\n.react-flow__zoompane {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n}\n\n.react-flow__selectionpane {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n}\n\n.react-flow__selection {\n position: absolute;\n top: 0;\n left: 0;\n background: rgba(0, 89, 220, 0.08);\n border: 1px dotted rgba(0, 89, 220, 0.8);\n}\n\n.react-flow__edges {\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n z-index: 2;\n}\n\n.react-flow__edge {\n fill: none;\n stroke: #bbb;\n stroke-width: 2;\n pointer-events: all;\n}\n\n.react-flow__edge.selected {\n stroke: #555;\n }\n\n.react-flow__edge.animated {\n stroke-dasharray: 5;\n -webkit-animation: dashdraw 0.5s linear infinite;\n animation: dashdraw 0.5s linear infinite;\n }\n\n.react-flow__edge.connection {\n stroke: '#ddd';\n pointer-events: none;\n }\n\n@-webkit-keyframes dashdraw {\n from {\n stroke-dashoffset: 10;\n }\n}\n\n@keyframes dashdraw {\n from {\n stroke-dashoffset: 10;\n }\n}\n\n.react-flow__nodes {\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: 3;\n pointer-events: none;\n transform-origin: 0 0;\n}\n\n.is-interactive .react-flow__node {\n cursor: -webkit-grab;\n cursor: grab;\n }\n\n.is-interactive .react-flow__node:hover > * {\n box-shadow: 0 1px 5px 2px rgba(0, 0, 0, 0.08);\n }\n\n.is-interactive .react-flow__handle {\n cursor: crosshair;\n }\n\n.react-flow__node {\n position: absolute;\n color: #222;\n font-family: sans-serif;\n font-size: 12px;\n text-align: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n pointer-events: all;\n transform-origin: 0 0;\n}\n\n.react-flow__node.selected > * {\n box-shadow: 0 0 0 2px #555;\n }\n\n.react-flow__handle {\n position: absolute;\n width: 10px;\n height: 8px;\n background: rgba(255, 255, 255, 0.4);\n}\n\n.react-flow__handle.bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 0);\n }\n\n.react-flow__handle.top {\n left: 50%;\n top: 0;\n transform: translate(-50%, 0);\n }\n\n.react-flow__handle.left {\n top: 50%;\n left: 0;\n transform: translate(0, -50%);\n }\n\n.react-flow__handle.right {\n right: 0;\n top: 50%;\n transform: translate(0, -50%);\n }\n\n.react-flow__nodesselection {\n z-index: 3;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n transform-origin: left top;\n pointer-events: none;\n}\n\n.react-flow__nodesselection-rect {\n position: absolute;\n background: rgba(0, 89, 220, 0.08);\n border: 1px dotted rgba(0, 89, 220, 0.8);\n pointer-events: all;\n }\n\n.react-flow__controls {\n box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n}\n\n.react-flow__controls-button {\n background: #fefefe;\n border-bottom: 1px solid #eee;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 16px;\n height: 16px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n padding: 5px;\n }\n\n.react-flow__controls-button svg {\n width: 100%;\n }\n\n.react-flow__controls-button:hover {\n background: #f4f4f4;\n }\n"; -styleInject(css_248z); - -{ - var whyDidYouRender = require('@welldone-software/why-did-you-render'); - whyDidYouRender(React__default); -} -var ReactFlow = function (_a) { - var style = _a.style, onElementClick = _a.onElementClick, elements = _a.elements, children = _a.children, nodeTypes = _a.nodeTypes, edgeTypes = _a.edgeTypes, onLoad = _a.onLoad, onMove = _a.onMove, onElementsRemove = _a.onElementsRemove, onConnect = _a.onConnect, onNodeDragStop = _a.onNodeDragStop, connectionLineType = _a.connectionLineType, connectionLineStyle = _a.connectionLineStyle, deleteKeyCode = _a.deleteKeyCode, selectionKeyCode = _a.selectionKeyCode, showBackground = _a.showBackground, backgroundGap = _a.backgroundGap, backgroundType = _a.backgroundType, backgroundColor = _a.backgroundColor, snapToGrid = _a.snapToGrid, snapGrid = _a.snapGrid, onlyRenderVisibleNodes = _a.onlyRenderVisibleNodes, isInteractive = _a.isInteractive; - var nodeTypesParsed = React.useMemo(function () { return createNodeTypes(nodeTypes); }, []); - var edgeTypesParsed = React.useMemo(function () { return createEdgeTypes(edgeTypes); }, []); - return (React__default.createElement("div", { style: style, className: "react-flow" }, - React__default.createElement(StoreProvider, { store: store }, - React__default.createElement(GraphView, { onLoad: onLoad, onMove: onMove, onElementClick: onElementClick, onNodeDragStop: onNodeDragStop, nodeTypes: nodeTypesParsed, edgeTypes: edgeTypesParsed, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle, selectionKeyCode: selectionKeyCode, onElementsRemove: onElementsRemove, deleteKeyCode: deleteKeyCode, elements: elements, onConnect: onConnect, backgroundColor: backgroundColor, backgroundGap: backgroundGap, showBackground: showBackground, backgroundType: backgroundType, snapToGrid: snapToGrid, snapGrid: snapGrid, onlyRenderVisibleNodes: onlyRenderVisibleNodes, isInteractive: isInteractive }), - children))); -}; -ReactFlow.displayName = 'ReactFlow'; -ReactFlow.defaultProps = { - onElementClick: function () { }, - onElementsRemove: function () { }, - onNodeDragStop: function () { }, - onConnect: function () { }, - onLoad: function () { }, - onMove: function () { }, - nodeTypes: { - input: InputNode, - default: DefaultNode, - output: OutputNode, - }, - edgeTypes: { - default: BezierEdge, - straight: StraightEdge, - step: StepEdge, - }, - connectionLineType: 'bezier', - connectionLineStyle: {}, - deleteKeyCode: 8, - selectionKeyCode: 16, - backgroundColor: '#eee', - backgroundGap: 24, - showBackground: true, - backgroundType: GridType.Dots, - snapToGrid: false, - snapGrid: [16, 16], - onlyRenderVisibleNodes: true, - isInteractive: true, -}; - -var baseStyle = { - position: 'absolute', - zIndex: 5, - bottom: 10, - right: 10, - width: 200, - height: 150, -}; -var MiniMapNode = function (_a) { - var node = _a.node, color = _a.color, borderRadius = _a.borderRadius; - var _b = node.__rg, _c = _b.position, x = _c.x, y = _c.y, width = _b.width, height = _b.height; - var _d = node.style || {}, background = _d.background, backgroundColor = _d.backgroundColor; - var fill = (background || backgroundColor || color); - return (React__default.createElement("rect", { className: "react-flow__minimap-node", x: x, y: y, rx: borderRadius, ry: borderRadius, width: width, height: height, fill: fill })); -}; -var index = (function (_a) { - var _b = _a.style, style = _b === void 0 ? { backgroundColor: '#f8f8f8' } : _b, className = _a.className, _c = _a.nodeColor, nodeColor = _c === void 0 ? '#ddd' : _c, _d = _a.nodeBorderRadius, nodeBorderRadius = _d === void 0 ? 5 : _d, _e = _a.maskColor, maskColor = _e === void 0 ? 'rgba(10, 10, 10, .25)' : _e; - var state = useStoreState$1(function (_a) { - var width = _a.width, height = _a.height, nodes = _a.nodes, _b = _a.transform, tX = _b[0], tY = _b[1], tScale = _b[2]; - return ({ - width: width, - height: height, - nodes: nodes, - tX: tX, - tY: tY, - tScale: tScale, - }); - }); - var mapClasses = classnames('react-flow__minimap', className); - var elementWidth = (style.width || baseStyle.width); - var elementHeight = (style.height || baseStyle.height); - var nodeColorFunc = (nodeColor instanceof Function ? nodeColor : function () { return nodeColor; }); - var hasNodes = state.nodes && state.nodes.length; - var bb = getRectOfNodes(state.nodes); - var viewBB = { - x: -state.tX / state.tScale, - y: -state.tY / state.tScale, - width: state.width / state.tScale, - height: state.height / state.tScale, - }; - var boundingRect = hasNodes ? getBoundsofRects(bb, viewBB) : viewBB; - var scaledWidth = boundingRect.width / elementWidth; - var scaledHeight = boundingRect.height / elementHeight; - var viewScale = Math.max(scaledWidth, scaledHeight); - var viewWidth = viewScale * elementWidth; - var viewHeight = viewScale * elementHeight; - var offset = 5 * viewScale; - var x = boundingRect.x - (viewWidth - boundingRect.width) / 2 - offset; - var y = boundingRect.y - (viewHeight - boundingRect.height) / 2 - offset; - var width = viewWidth + offset * 2; - var height = viewHeight + offset * 2; - return (React__default.createElement("svg", { width: elementWidth, height: elementHeight, viewBox: x + " " + y + " " + width + " " + height, style: __assign(__assign({}, baseStyle), style), className: mapClasses }, - state.nodes.map(function (node) { return (React__default.createElement(MiniMapNode, { key: node.id, node: node, color: nodeColorFunc(node), borderRadius: nodeBorderRadius })); }), - React__default.createElement("path", { className: "react-flow__minimap-mask", d: "M" + (x - offset) + "," + (y - offset) + "h" + (width + offset * 2) + "v" + (height + offset * 2) + "h" + (-width - offset * 2) + "z\n M" + viewBB.x + "," + viewBB.y + "h" + viewBB.width + "v" + viewBB.height + "h" + -viewBB.width + "z", fill: maskColor, fillRule: "evenodd" }))); -}); - -function _extends$2() { _extends$2 = 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$2.apply(this, arguments); } - -var _ref = /*#__PURE__*/React.createElement("path", { - d: "M416 277.333H277.333V416h-42.666V277.333H96v-42.666h138.667V96h42.666v138.667H416v42.666z" -}); - -function SvgPlus(props) { - return /*#__PURE__*/React.createElement("svg", _extends$2({ - viewBox: "0 0 512 512" - }, props), _ref); -} - -function _extends$3() { _extends$3 = 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$3.apply(this, arguments); } - -var _ref$1 = /*#__PURE__*/React.createElement("path", { - d: "M96 235h320v42H96z" -}); - -function SvgMinus(props) { - return /*#__PURE__*/React.createElement("svg", _extends$3({ - viewBox: "0 0 512 512" - }, props), _ref$1); -} - -function _extends$4() { _extends$4 = 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$4.apply(this, arguments); } - -var _ref$2 = /*#__PURE__*/React.createElement("path", { - d: "M96 124.2c0-6.9 5.2-12.2 12.2-12.2H176V64h-66.8C75.7 64 48 90.7 48 124.2V192h48v-67.8zM403.6 64H336v48h67.2c6.9 0 12.8 5.2 12.8 12.2V192h48v-67.8c0-33.5-27-60.2-60.4-60.2zM416 386.8c0 6.9-5.2 12.2-12.2 12.2H336v49h67.8c33.5 0 60.2-27.7 60.2-61.2V320h-48v66.8zM108.2 399c-6.9 0-12.2-5.2-12.2-12.2V320H48v66.8c0 33.5 27.7 61.2 61.2 61.2H176v-49h-67.8z" -}); - -function SvgFitview(props) { - return /*#__PURE__*/React.createElement("svg", _extends$4({ - viewBox: "0 0 512 512" - }, props), _ref$2); -} - -var baseStyle$1 = { - position: 'absolute', - zIndex: 5, - bottom: 10, - left: 10, -}; -var index$1 = (function (_a) { - var style = _a.style, className = _a.className; - var mapClasses = classnames('react-flow__controls', className); - return (React__default.createElement("div", { className: mapClasses, style: __assign(__assign({}, baseStyle$1), style) }, - React__default.createElement("div", { className: "react-flow__controls-button react-flow__controls-zoomin", onClick: zoomIn }, - React__default.createElement(SvgPlus, null)), - React__default.createElement("div", { className: "react-flow__controls-button react-flow__controls-zoomout", onClick: zoomOut }, - React__default.createElement(SvgMinus, null)), - React__default.createElement("div", { className: "react-flow__controls-button react-flow__controls-fitview", onClick: function () { return fitView(); } }, - React__default.createElement(SvgFitview, null)))); -}); - -exports.Controls = index$1; -exports.Handle = Handle; -exports.MiniMap = index; -exports.addEdge = addEdge; -exports.default = ReactFlow; -exports.getOutgoers = getOutgoers; -exports.isEdge = isEdge; -exports.isNode = isNode; -exports.removeElements = removeElements; -//# sourceMappingURL=ReactFlow.js.map diff --git a/dist/ReactFlow.js.map b/dist/ReactFlow.js.map deleted file mode 100644 index 8ed1fe8f..00000000 --- a/dist/ReactFlow.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ReactFlow.js","sources":["../node_modules/immer-peasy/dist/immer.module.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/symbol-observable/es/index.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/node_modules/isobject/index.js","../node_modules/easy-peasy/node_modules/is-plain-object/index.js","../node_modules/debounce/index.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/selection/select.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/data.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/sort.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/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/append.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/datum.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-drag/src/nodrag.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.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/selection/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/ease.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.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-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js","../node_modules/fast-deep-equal/index.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/index.js","../node_modules/react-draggable/build/module/utils/shims.js","../node_modules/react-draggable/build/module/utils/getPrefix.js","../node_modules/react-draggable/build/module/utils/domFns.js","../node_modules/react-draggable/build/module/utils/positionFns.js","../node_modules/react-draggable/build/module/utils/log.js","../node_modules/react-draggable/build/module/DraggableCore.js","../node_modules/react-draggable/build/module/Draggable.js","../node_modules/resize-observer/lib/ContentRect.js","../node_modules/resize-observer/lib/ResizeObservation.js","../node_modules/resize-observer/lib/ResizeObserverEntry.js","../node_modules/resize-observer/lib/ResizeObserver.js","../node_modules/style-inject/dist/style-inject.es.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","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","/* 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","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#subscribelistener 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#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\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 hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\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}","/*!\n * isobject \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nexport default function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nimport isObject from 'isobject';\n\nfunction isObjectObject(o) {\n return isObject(o) === true\n && Object.prototype.toString.call(o) === '[object Object]';\n}\n\nexport default function isPlainObject(o) {\n var ctor,prot;\n\n if (isObjectObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n};\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","import { isDraft, original, createDraft, finishDraft, setAutoFreeze } from 'immer-peasy';\nimport React, { createContext, useContext, useRef, useReducer, useState, useEffect, useLayoutEffect, useMemo } from 'react';\nimport { compose, createStore as createStore$1, applyMiddleware } from 'redux';\nimport reduxThunk from 'redux-thunk';\nimport memoizerific from 'memoizerific';\nimport isPlainObject from 'is-plain-object';\nimport debounce from 'debounce';\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, equalityFn) {\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 if (process.env.NODE_ENV === 'development') {\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 throw subscriptionMapStateError.current || err;\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 var isStateEqual = typeof equalityFn === 'function' ? equalityFn(stateRef.current, newState) : stateRef.current === newState;\n\n if (isStateEqual) {\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 createStoreRehydratedHook(Context) {\n return function useStoreRehydrated() {\n var store = useContext(Context);\n\n var _useState = useState(false),\n rehydrated = _useState[0],\n setRehydrated = _useState[1];\n\n useEffect(function () {\n store.persist.resolveRehydration().then(function () {\n return setRehydrated(true);\n });\n }, []);\n return rehydrated;\n };\n}\nvar useStoreRehydrated = createStoreRehydratedHook(StoreContext);\nfunction createTypedHooks() {\n return {\n useStoreActions: useStoreActions,\n useStoreDispatch: useStoreDispatch,\n useStoreState: useStoreState,\n useStoreRehydrated: useStoreRehydrated,\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 = 'a';\nvar actionOnSymbol = 'aO';\nvar computedSymbol = 'c';\nvar persistSymbol = 'p';\nvar reducerSymbol = 'r';\nvar thunkOnSymbol = 'tO';\nvar thunkSymbol = 't';\n\nvar debug = function debug(state) {\n if (isDraft(state)) {\n return original(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 persist = function persist(model, config) {\n var _extends2;\n\n return _extends({}, model, (_extends2 = {}, _extends2[persistSymbol] = config, _extends2));\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 deepCloneStateWithoutComputed = function deepCloneStateWithoutComputed(source) {\n var recursiveClone = function recursiveClone(current) {\n var next = Object.keys(current).reduce(function (acc, key) {\n if (Object.getOwnPropertyDescriptor(current, key).get == null) {\n acc[key] = current[key];\n }\n\n return acc;\n }, {});\n Object.keys(next).forEach(function (key) {\n if (isPlainObject(next[key])) {\n next[key] = recursiveClone(next[key]);\n }\n });\n return next;\n };\n\n return recursiveClone(source);\n};\nvar isPromise = function isPromise(x) {\n return x != null && typeof x === 'object' && typeof x.then === 'function';\n};\nfunction get(path, target) {\n return path.reduce(function (acc, cur) {\n return isPlainObject(acc) ? acc[cur] : undefined;\n }, target);\n}\nfunction 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}\nvar set = function set(path, target, value) {\n if (path.length === 0) {\n if (typeof value === 'object') {\n Object.keys(target).forEach(function (key) {\n delete target[key];\n });\n Object.keys(value).forEach(function (key) {\n target[key] = value[key];\n });\n }\n\n return;\n }\n\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};\nfunction createSimpleProduce(disableImmer) {\n if (disableImmer === void 0) {\n disableImmer = false;\n }\n\n return 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 if (path.length === 0) {\n var _draft = createDraft(state);\n\n var _result = fn(_draft);\n\n if (_result) {\n return isDraft(_result) ? finishDraft(_result) : _result;\n }\n\n return finishDraft(_draft);\n }\n\n var parentPath = path.slice(0, path.length - 1);\n var draft = createDraft(state);\n var parent = get(parentPath, state);\n var current = get(path, draft);\n var result = fn(current);\n\n if (result) {\n parent[path[path.length - 1]] = result;\n }\n\n return finishDraft(draft);\n };\n}\n\nfunction createReducer(disableImmer, actionReducersDict, customReducers, computedProperties) {\n var simpleProduce = createSimpleProduce(disableImmer);\n\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, _ref) {\n var parentPath = _ref.parentPath,\n key = _ref.key,\n red = _ref.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 (_ref2) {\n var parentPath = _ref2.parentPath,\n bindComputedProperty = _ref2.bindComputedProperty;\n bindComputedProperty(get(parentPath, next));\n });\n }\n\n return next;\n };\n\n return rootReducer;\n}\n\nvar noopStorage = {\n getItem: function getItem() {\n return undefined;\n },\n setItem: function setItem() {\n return undefined;\n },\n removeItem: function removeItem() {\n return undefined;\n }\n};\nvar localStorage = typeof window !== 'undefined' && typeof window.localStorage !== 'undefined' ? window.localStorage : noopStorage;\nvar sessionStorage = typeof window !== 'undefined' && typeof window.sessionStorage !== 'undefined' ? window.sessionStorage : noopStorage;\n\nfunction createStorageWrapper(storage, transformers) {\n if (storage === void 0) {\n storage = sessionStorage;\n }\n\n if (transformers === void 0) {\n transformers = [];\n }\n\n if (typeof storage === 'string') {\n if (storage === 'localStorage') {\n storage = localStorage;\n } else if (storage === 'sessionStorage') {\n storage = sessionStorage;\n } else {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\"Invalid storage provider specified for Easy Peasy persist: \" + storage + \"\\nValid values include \\\"localStorage\\\", \\\"sessionStorage\\\" or a custom storage engine.\");\n }\n\n storage = noopStorage;\n }\n }\n\n var outTransformers = transformers.reverse();\n\n var serialize = function serialize(data, key) {\n var simpleKey = key.substr(key.indexOf('@') + 1);\n var transformed = transformers.reduce(function (acc, cur) {\n return cur.in(acc, simpleKey);\n }, data);\n return storage === localStorage || storage === sessionStorage ? JSON.stringify({\n data: transformed\n }) : transformed;\n };\n\n var deserialize = function deserialize(data, key) {\n var simpleKey = key.substr(key.indexOf('@') + 1);\n var result = storage === localStorage || storage === sessionStorage ? JSON.parse(data).data : data;\n return outTransformers.reduce(function (acc, cur) {\n return cur.out(acc, simpleKey);\n }, result);\n };\n\n var isAsync = isPromise(storage.getItem('_'));\n return {\n isAsync: isAsync,\n getItem: function getItem(key) {\n if (isAsync) {\n return storage.getItem(key).then(function (wrapped) {\n return wrapped != null ? deserialize(wrapped, key) : undefined;\n });\n }\n\n var wrapped = storage.getItem(key);\n return wrapped != null ? deserialize(wrapped, key) : undefined;\n },\n setItem: function setItem(key, data) {\n return storage.setItem(key, serialize(data, key));\n },\n removeItem: function removeItem(key) {\n return storage.removeItem(key);\n }\n };\n}\n\nfunction extractPersistConfig(path, persistDefinition) {\n if (persistDefinition === void 0) {\n persistDefinition = {};\n }\n\n return {\n path: path,\n config: {\n blacklist: persistDefinition.blacklist || [],\n mergeStrategy: persistDefinition.mergeStrategy || 'merge',\n storage: createStorageWrapper(persistDefinition.storage, persistDefinition.transformers),\n whitelist: persistDefinition.whitelist || []\n }\n };\n}\n\nfunction resolvePersistTargets(target, whitelist, blacklist) {\n var targets = Object.keys(target);\n\n if (whitelist.length > 0) {\n targets = targets.reduce(function (acc, cur) {\n if (whitelist.findIndex(function (x) {\n return x === cur;\n }) !== -1) {\n return [].concat(acc, [cur]);\n }\n\n return acc;\n }, []);\n }\n\n if (blacklist.length > 0) {\n targets = targets.reduce(function (acc, cur) {\n if (blacklist.findIndex(function (x) {\n return x === cur;\n }) !== -1) {\n return acc;\n }\n\n return [].concat(acc, [cur]);\n }, []);\n }\n\n return targets;\n}\n\nfunction createPersistor(persistKey, references) {\n return debounce(function () {\n references.internals.persistenceConfig.forEach(function (_ref) {\n var path = _ref.path,\n config = _ref.config;\n var storage = config.storage,\n whitelist = config.whitelist,\n blacklist = config.blacklist;\n var state = references.getState();\n var persistRoot = deepCloneStateWithoutComputed(get(path, state));\n var targets = resolvePersistTargets(persistRoot, whitelist, blacklist);\n targets.forEach(function (key) {\n var targetPath = [].concat(path, [key]);\n storage.setItem(persistKey(targetPath), get(targetPath, state));\n });\n });\n }, 1000);\n}\nfunction createPersistMiddleware(persistor, references) {\n return function () {\n return function (next) {\n return function (action) {\n var state = next(action);\n\n if (action && action.type !== '@action.ePRS' && references.internals.persistenceConfig.length > 0) {\n persistor(state);\n }\n\n return state;\n };\n };\n };\n}\nfunction createPersistenceClearer(persistKey, references) {\n return function () {\n return new Promise(function (resolve, reject) {\n references.internals.persistenceConfig.forEach(function (_ref2) {\n var path = _ref2.path,\n config = _ref2.config;\n var storage = config.storage,\n whitelist = config.whitelist,\n blacklist = config.blacklist;\n var persistRoot = get(path, references.getState());\n var targets = resolvePersistTargets(persistRoot, whitelist, blacklist);\n\n if (targets.length > 0) {\n Promise.all(targets.map(function (key) {\n var targetPath = [].concat(path, [key]);\n return storage.removeItem(persistKey(targetPath));\n })).then(function () {\n return resolve();\n }, reject);\n } else {\n resolve();\n }\n });\n });\n };\n}\nfunction rehydrateStateFromPersistIfNeeded(persistKey, replaceState, references) {\n // If we have any persist configs we will attemp to perform a state rehydration\n var resolveRehydration = Promise.resolve();\n\n if (references.internals.persistenceConfig.length > 0) {\n references.internals.persistenceConfig.forEach(function (persistInstance) {\n var path = persistInstance.path,\n config = persistInstance.config;\n var blacklist = config.blacklist,\n mergeStrategy = config.mergeStrategy,\n storage = config.storage,\n whitelist = config.whitelist;\n var state = references.internals.defaultState;\n var persistRoot = deepCloneStateWithoutComputed(get(path, state));\n var targets = resolvePersistTargets(persistRoot, whitelist, blacklist);\n\n var applyRehydrationStrategy = function applyRehydrationStrategy(originalState, rehydratedState) {\n if (mergeStrategy === 'overwrite') {\n set(path, originalState, rehydratedState);\n } else if (mergeStrategy === 'merge') {\n var target = get(path, originalState);\n Object.keys(rehydratedState).forEach(function (key) {\n target[key] = rehydratedState[key];\n });\n } else if (mergeStrategy === 'mergeDeep') {\n var _target = get(path, originalState);\n\n var setAt = function setAt(currentTarget, currentNext) {\n Object.keys(currentNext).forEach(function (key) {\n var data = currentNext[key];\n\n if (isPlainObject(data)) {\n if (!isPlainObject(currentTarget[key])) {\n currentTarget[key] = {};\n }\n\n setAt(currentTarget[key], data);\n } else {\n currentTarget[key] = data;\n }\n });\n };\n\n setAt(_target, rehydratedState);\n }\n };\n\n if (storage.isAsync) {\n var asyncStateResolvers = targets.reduce(function (acc, key) {\n var targetPath = [].concat(path, [key]);\n var dataPromise = storage.getItem(persistKey(targetPath));\n\n if (isPromise(dataPromise)) {\n acc.push({\n key: key,\n dataPromise: dataPromise\n });\n }\n\n return acc;\n }, []);\n\n if (asyncStateResolvers.length > 0) {\n resolveRehydration = Promise.all(asyncStateResolvers.map(function (x) {\n return x.dataPromise;\n })).then(function (resolvedData) {\n var next = resolvedData.reduce(function (acc, cur, idx) {\n var key = asyncStateResolvers[idx].key;\n\n if (cur !== undefined) {\n acc[key] = cur;\n }\n\n return acc;\n }, {});\n\n if (Object.keys(next).length === 0) {\n return;\n }\n\n applyRehydrationStrategy(state, next);\n replaceState(state);\n });\n }\n } else {\n var next = targets.reduce(function (acc, key) {\n var targetPath = [].concat(path, [key]);\n var data = storage.getItem(persistKey(targetPath));\n\n if (data !== undefined) {\n acc[key] = data;\n }\n\n return acc;\n }, {});\n applyRehydrationStrategy(state, next);\n replaceState(state);\n }\n });\n }\n\n return resolveRehydration;\n}\n\nfunction createActionCreator(actionDefinition, meta, references) {\n var prefix = actionDefinition[actionSymbol] ? '@action' : '@actionOn';\n var type = prefix + \".\" + meta.path.join('.');\n var actionMeta = actionDefinition[actionSymbol] || actionDefinition[actionOnSymbol];\n actionMeta.actionName = meta.key;\n actionMeta.type = type;\n actionMeta.parent = meta.parent;\n actionMeta.path = meta.path;\n\n var actionCreator = function actionCreator(payload) {\n var action = {\n type: type,\n payload: payload\n };\n\n if (actionDefinition[actionOnSymbol] && actionMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(actionMeta.resolvedTargets);\n }\n\n var result = references.dispatch(action);\n return result;\n };\n\n actionCreator.type = type;\n return actionCreator;\n}\n\nfunction createThunkHandler(thunkDefinition, meta, references, injections, actionCreators) {\n var thunkMeta = thunkDefinition[thunkSymbol] || thunkDefinition[thunkOnSymbol];\n return function (payload) {\n var helpers = {\n dispatch: references.dispatch,\n getState: function getState() {\n return get(meta.parent, 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 (thunkDefinition[thunkOnSymbol] && thunkMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(thunkMeta.resolvedTargets);\n }\n\n return thunkDefinition(get(meta.parent, actionCreators), payload, helpers);\n };\n}\nfunction createThunkActionsCreator(thunkDefinition, meta, references, thunkHandler) {\n var prefix = thunkDefinition[thunkSymbol] ? '@thunk' : '@thunkOn';\n var type = prefix + \".\" + meta.path.join('.');\n var startType = type + \"(start)\";\n var successType = type + \"(success)\";\n var failType = type + \"(fail)\";\n var thunkMeta = thunkDefinition[thunkSymbol] || thunkDefinition[thunkOnSymbol];\n thunkMeta.type = type;\n thunkMeta.actionName = meta.key;\n thunkMeta.parent = meta.parent;\n thunkMeta.path = meta.path;\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 (isPromise(result)) {\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 return actionCreator;\n}\n\nfunction createListenerMiddleware(references) {\n return function () {\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}\nfunction bindListenerDefinitions(listenerDefinitions, actionCreators, actionCreatorDict, listenerActionMap) {\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\nfunction createComputedPropertyBinder(parentPath, key, definition, computedState, references) {\n var computedMeta = definition[computedSymbol];\n var memoisedResultFn = memoizerific(1)(definition);\n return 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 === 'development') {\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}\nfunction createComputedPropertiesMiddleware(references) {\n return function (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\nfunction extractDataFromModel(model, initialState, injections, references) {\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 persistenceConfig = [];\n var computedState = {\n isInReducer: false,\n currentState: defaultState\n };\n\n var recursiveExtractFromModel = function recursiveExtractFromModel(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 key: key\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 (key === persistSymbol) {\n persistenceConfig.push(extractPersistConfig(parentPath, value));\n return;\n }\n\n if (typeof value === 'function') {\n if (value[actionSymbol] || value[actionOnSymbol]) {\n var actionReducer = value;\n var actionCreator = createActionCreator(value, meta, references);\n actionCreatorDict[actionCreator.type] = actionCreator;\n actionReducersDict[actionCreator.type] = actionReducer;\n\n if (meta.key !== 'ePRS') {\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 thunkHandler = createThunkHandler(value, meta, references, injections, actionCreators);\n\n var _actionCreator = createThunkActionsCreator(value, meta, references, thunkHandler);\n\n set(path, actionThunks, thunkHandler);\n actionCreatorDict[_actionCreator.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 var bindComputedProperty = createComputedPropertyBinder(parentPath, key, value, computedState, references);\n bindComputedProperty(parent);\n computedProperties.push({\n key: key,\n parentPath: parentPath,\n bindComputedProperty: bindComputedProperty\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 (isPlainObject(value)) {\n var existing = get(path, defaultState);\n\n if (existing == null) {\n set(path, defaultState, {});\n }\n\n recursiveExtractFromModel(value, path);\n } else {\n handleValueAsState();\n }\n });\n };\n\n recursiveExtractFromModel(model, []);\n bindListenerDefinitions(listenerDefinitions, actionCreators, actionCreatorDict, listenerActionMap);\n return {\n actionCreatorDict: actionCreatorDict,\n actionCreators: actionCreators,\n actionReducersDict: actionReducersDict,\n computedProperties: computedProperties,\n customReducers: customReducers,\n computedState: computedState,\n defaultState: defaultState,\n listenerActionCreators: listenerActionCreators,\n listenerActionMap: listenerActionMap,\n persistenceConfig: persistenceConfig\n };\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 var _extractDataFromModel = extractDataFromModel(model, initialState, injections, references),\n actionCreatorDict = _extractDataFromModel.actionCreatorDict,\n actionCreators = _extractDataFromModel.actionCreators,\n actionReducersDict = _extractDataFromModel.actionReducersDict,\n computedState = _extractDataFromModel.computedState,\n computedProperties = _extractDataFromModel.computedProperties,\n customReducers = _extractDataFromModel.customReducers,\n defaultState = _extractDataFromModel.defaultState,\n listenerActionCreators = _extractDataFromModel.listenerActionCreators,\n listenerActionMap = _extractDataFromModel.listenerActionMap,\n persistenceConfig = _extractDataFromModel.persistenceConfig;\n\n var rootReducer = createReducer(disableImmer, actionReducersDict, customReducers, computedProperties);\n return {\n actionCreatorDict: actionCreatorDict,\n actionCreators: actionCreators,\n computedProperties: computedProperties,\n computedState: computedState,\n defaultState: defaultState,\n listenerActionCreators: listenerActionCreators,\n listenerActionMap: listenerActionMap,\n persistenceConfig: persistenceConfig,\n reducer: reducerEnhancer(rootReducer)\n };\n}\n\nfunction createStore(model, options) {\n if (options === void 0) {\n options = {};\n }\n\n var modelClone = deepCloneStateWithoutComputed(model);\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 ePRS: action(function (_, payload) {\n return payload;\n })\n });\n };\n\n var references = {};\n var modelDefinition = bindReplaceState(modelClone);\n var mockedActions = [];\n\n var persistKey = function persistKey(targetPath) {\n return \"[\" + storeName + \"]@\" + targetPath.join('.');\n };\n\n var persistor = createPersistor(persistKey, references);\n var persistMiddleware = createPersistMiddleware(persistor, references);\n var clearPersistance = createPersistenceClearer(persistKey, references);\n\n var replaceState = function replaceState(nextState) {\n return references.internals.actionCreatorDict['@action.ePRS'](nextState);\n };\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 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 composeEnhancers = compose$1 || (devTools && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: storeName\n }) : compose);\n bindStoreInternals(initialState);\n var easyPeasyMiddleware = [createComputedPropertiesMiddleware(references), reduxThunk].concat(middleware, [createListenerMiddleware(references), persistMiddleware]);\n\n if (mockActions) {\n easyPeasyMiddleware.push(mockActionsMiddleware);\n }\n\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(currentState);\n store.replaceReducer(references.internals.reducer);\n replaceState(references.internals.defaultState);\n bindActionCreators();\n };\n\n var _resolveRehydration = rehydrateStateFromPersistIfNeeded(persistKey, replaceState, references);\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 persist: {\n clear: clearPersistance,\n flush: function flush() {\n return persistor.flush();\n },\n resolveRehydration: function resolveRehydration() {\n return _resolveRehydration;\n }\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 useStoreRehydrated: createStoreRehydratedHook(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\n/**\n * This file has been copied from redux-persist.\n * The intention being to support as much of the redux-persist API as possible.\n */\nfunction createTransform(inbound, outbound, config) {\n if (config === void 0) {\n config = {};\n }\n\n var whitelist = config.whitelist || null;\n var blacklist = config.blacklist || null;\n\n function whitelistBlacklistCheck(key) {\n if (whitelist && whitelist.indexOf(key) === -1) return true;\n if (blacklist && blacklist.indexOf(key) !== -1) return true;\n return false;\n }\n\n return {\n in: function _in(data, key, fullState) {\n return !whitelistBlacklistCheck(key) && inbound ? inbound(data, key, fullState) : data;\n },\n out: function out(data, key, fullState) {\n return !whitelistBlacklistCheck(key) && outbound ? outbound(data, key, fullState) : data;\n }\n };\n}\n\nfunction 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, createTransform, createTypedHooks, debug, memo, persist, reducer, thunk, thunkOn, useStore, useStoreActions, useStoreDispatch, useStoreRehydrated, 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","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","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\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","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\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(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","export default function(x) {\n return function() {\n return x;\n };\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 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","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","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 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\";\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","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 var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\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","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","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","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 interrupt from \"../interrupt\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\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 {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 {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 {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 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 {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 {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","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","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 {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 {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","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","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","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","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 {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\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","/** @license React v16.10.2\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\nvar lowPriorityWarningWithoutStack = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarningWithoutStack = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarningWithoutStack(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(void 0, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarningWithoutStack$1 = lowPriorityWarningWithoutStack;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarningWithoutStack$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nexport function 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}\nexport function isFunction(func\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\nexport function isNum(num\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof num === 'number' && !isNaN(num);\n}\nexport function int(a\n/*: string*/\n)\n/*: number*/\n{\n return parseInt(a, 10);\n}\nexport function 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}","const prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nexport function 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}\nexport function browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\nexport function 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\nexport default getPrefix();","import { findInArray, isFunction, int } from './shims';\nimport browserPrefix, { browserPrefixToKey } from './getPrefix';\n/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/\n\nlet matchesSelectorFunc = '';\nexport function matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = findInArray(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return 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 (!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\nexport function 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}\nexport function addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n\n if (el.addEventListener) {\n el.addEventListener(event, handler, options);\n } else if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\nexport function removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n, inputOptions\n/*: Object*/\n)\n/*: void*/\n{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n\n if (el.removeEventListener) {\n el.removeEventListener(event, handler, options);\n } else if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\nexport function 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 += int(computedStyle.borderTopWidth);\n height += int(computedStyle.borderBottomWidth);\n return height;\n}\nexport function 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 += int(computedStyle.borderLeftWidth);\n width += int(computedStyle.borderRightWidth);\n return width;\n}\nexport function innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= int(computedStyle.paddingTop);\n height -= int(computedStyle.paddingBottom);\n return height;\n}\nexport function innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= int(computedStyle.paddingLeft);\n width -= int(computedStyle.paddingRight);\n return width;\n} // Get from offsetParent\n\nexport function offsetXYFromParent(evt\n/*: {clientX: number, clientY: number}*/\n, offsetParent\n/*: HTMLElement*/\n, scale\n/*: number*/\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) / scale;\n const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n return {\n x,\n y\n };\n}\nexport function createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [browserPrefixToKey('transform', browserPrefix)]: translation\n };\n}\nexport function createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\nexport function 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}\nexport function getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n return e.targetTouches && findInArray(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && findInArray(e.changedTouches, t => identifier === t.identifier);\n}\nexport function 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\nexport function 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}\nexport function removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n\n try {\n if (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 // Remove selection caused by scroll, unless it's a focused input\n // (we use doc.defaultView in case we're in an iframe)\n const selection = (doc.defaultView || window).getSelection();\n\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {// probably IE\n }\n}\nexport function 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}\nexport function 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}","import { isNum, int } from './shims';\nimport ReactDOM from 'react-dom';\nimport { getTouch, innerWidth, innerHeight, offsetXYFromParent, outerWidth, outerHeight } from './domFns';\n/*:: import type Draggable from '../Draggable';*/\n\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n\n/*:: import type DraggableCore from '../DraggableCore';*/\n\nexport function 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 + int(boundNodeStyle.paddingLeft) + int(nodeStyle.marginLeft),\n top: -node.offsetTop + int(boundNodeStyle.paddingTop) + int(nodeStyle.marginTop),\n right: innerWidth(boundNode) - outerWidth(node) - node.offsetLeft + int(boundNodeStyle.paddingRight) - int(nodeStyle.marginRight),\n bottom: innerHeight(boundNode) - outerHeight(node) - node.offsetTop + int(boundNodeStyle.paddingBottom) - int(nodeStyle.marginBottom)\n };\n } // Keep x and y below right and bottom limits...\n\n\n if (isNum(bounds.right)) x = Math.min(x, bounds.right);\n if (isNum(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n if (isNum(bounds.left)) x = Math.max(x, bounds.left);\n if (isNum(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\nexport function 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}\nexport function canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\nexport function 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\nexport function getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n const touchObj = typeof touchIdentifier === 'number' ? 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 offsetXYFromParent(touchObj || e, offsetParent, draggableCore.props.scale);\n} // Create an data object exposed by 's events\n\nexport function createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n const state = draggable.state;\n const isStart = !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\nexport function 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\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.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}","/*eslint no-console:0*/\nexport default function log(...args) {\n if (undefined) console.log(...args);\n}","function _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\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport { matchesSelectorAndParentsTo, addEvent, removeEvent, addUserSelectStyles, getTouchIdentifier, removeUserSelectStyles } from './utils/domFns';\nimport { createCoreData, getControlPosition, snapToGrid } from './utils/positionFns';\nimport { dontSetMe } from './utils/shims';\nimport log from './utils/log';\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n\n/*:: import type {Element as ReactElement} from 'react';*/\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 scale: number,\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//\nexport default class DraggableCore extends React.Component\n/*:: */\n{\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, \"mounted\", false);\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.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 && !matchesSelectorAndParentsTo(e.target, this.props.handle, thisNode) || this.props.cancel && matchesSelectorAndParentsTo(e.target, this.props.cancel, thisNode)) {\n return;\n } // Prevent scrolling on mobile devices, like ipad/iphone.\n // Important that this is after handle/cancel.\n\n\n if (e.type === 'touchstart') e.preventDefault(); // 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 const touchIdentifier = 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 = 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 = createCoreData(this, x, y);\n log('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n log('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false || this.mounted === 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) 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 addEvent(ownerDocument, dragEventFor.move, this.handleDrag);\n addEvent(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n\n _defineProperty(this, \"handleDrag\", e => {\n // Get the current drag point from the event. This is used as the offset.\n const position = 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] = 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 = createCoreData(this, x, y);\n log('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 || this.mounted === 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 = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {\n x,\n y\n } = position;\n const coreEvent = createCoreData(this, x, y); // Call event handler\n\n const shouldContinue = this.props.onStop(e, coreEvent);\n if (shouldContinue === false || this.mounted === false) return false;\n const thisNode = ReactDOM.findDOMNode(this);\n\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) removeUserSelectStyles(thisNode.ownerDocument);\n }\n\n log('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n if (thisNode) {\n // Remove event handlers\n log('DraggableCore: Removing handlers');\n removeEvent(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n 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 componentDidMount() {\n this.mounted = true; // Touch handlers must be added with {passive: false} to be cancelable.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n\n const thisNode = ReactDOM.findDOMNode(this);\n\n if (thisNode) {\n addEvent(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n }\n }\n\n componentWillUnmount() {\n this.mounted = false; // 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\n const thisNode = ReactDOM.findDOMNode(this);\n\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n removeEvent(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.touch.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n removeEvent(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n removeEvent(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n if (this.props.enableUserSelectHack) 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.cloneElement(React.Children.only(this.props.children), {\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 onMouseUp: this.onMouseUp,\n // onTouchStart is added on `componentDidMount` so they can be added with\n // {passive: false}, which allows it to cancel. See \n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n onTouchEnd: this.onTouchEnd\n });\n }\n\n}\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.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.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.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.arrayOf(PropTypes.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.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.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: PropTypes.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: PropTypes.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.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.func,\n\n /**\n * `scale`, if set, applies scaling while dragging an element\n */\n scale: PropTypes.number,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: 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 scale: 1\n});","function _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\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { createCSSTransform, createSVGTransform } from './utils/domFns';\nimport { canDragX, canDragY, createDraggableData, getBoundPosition } from './utils/positionFns';\nimport { dontSetMe } from './utils/shims';\nimport DraggableCore from './DraggableCore';\n/*:: import type {ControlPosition, PositionOffsetControlPosition, DraggableBounds, DraggableCoreProps} from './DraggableCore';*/\n\nimport log from './utils/log';\n/*:: import type {DraggableEventHandler} from './utils/types';*/\n\n/*:: import type {Element as ReactElement} from 'react';*/\n\n/*:: type DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean,\n prevPropsPosition: ?ControlPosition,\n};*/\n\n/*:: export type DraggableProps = {\n ...$Exact,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: DraggableBounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n positionOffset: PositionOffsetControlPosition,\n position: ControlPosition,\n scale: number\n};*/\n\n//\n// Define \n//\nclass Draggable extends React.Component\n/*:: */\n{\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 log('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 log('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n const shouldStart = this.props.onStart(e, 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 log('Draggable: onDrag: %j', coreData);\n const uiData = 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] = 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 shouldContinue = this.props.onStop(e, createDraggableData(this, coreData));\n if (shouldContinue === false) return false;\n log('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.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: canDragX(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: 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 = 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 = createCSSTransform(transformOpts, positionOffset);\n } // Mark with class while dragging\n\n\n const className = classNames(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 /*#__PURE__*/React.createElement(DraggableCore, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), React.cloneElement(React.Children.only(children), {\n className: className,\n style: { ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n\n}\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", { // Accepts all props accepts.\n ...DraggableCore.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.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.oneOfType([PropTypes.shape({\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number,\n bottom: PropTypes.number\n }), PropTypes.string, PropTypes.oneOf([false])]),\n defaultClassName: PropTypes.string,\n defaultClassNameDragging: PropTypes.string,\n defaultClassNameDragged: PropTypes.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.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n positionOffset: PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.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.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n});\n\n_defineProperty(Draggable, \"defaultProps\", { ...DraggableCore.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});\n\nexport { Draggable as default, DraggableCore };","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect = function (target) {\n if ('getBBox' in target) {\n var box = target.getBBox();\n return Object.freeze({\n height: box.height,\n left: 0,\n top: 0,\n width: box.width,\n });\n }\n else { // if (target instanceof HTMLElement) { // also includes all other non-SVGGraphicsElements\n var styles = window.getComputedStyle(target);\n return Object.freeze({\n height: parseFloat(styles.height || '0'),\n left: parseFloat(styles.paddingLeft || '0'),\n top: parseFloat(styles.paddingTop || '0'),\n width: parseFloat(styles.width || '0'),\n });\n }\n};\nexports.ContentRect = ContentRect;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudFJlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29udGVudFJlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSxJQUFNLFdBQVcsR0FBRyxVQUFDLE1BQWU7SUFDaEMsSUFBSSxTQUFTLElBQUssTUFBNkIsRUFBRTtRQUM3QyxJQUFNLEdBQUcsR0FBSSxNQUE2QixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNqQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDbEIsSUFBSSxFQUFFLENBQUM7WUFDUCxHQUFHLEVBQUUsQ0FBQztZQUNOLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztTQUNuQixDQUFDLENBQUM7S0FDTjtTQUFNLEVBQUUsMEZBQTBGO1FBQy9GLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDakIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztZQUN4QyxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDO1lBQzNDLEdBQUcsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUM7WUFDekMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztTQUN6QyxDQUFDLENBQUM7S0FDTjtBQUNMLENBQUMsQ0FBQztBQUVPLGtDQUFXIn0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect_1 = require(\"./ContentRect\");\nvar ResizeObservation = /** @class */ (function () {\n function ResizeObservation(target) {\n this.target = target;\n this.$$broadcastWidth = this.$$broadcastHeight = 0;\n }\n Object.defineProperty(ResizeObservation.prototype, \"broadcastWidth\", {\n get: function () {\n return this.$$broadcastWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ResizeObservation.prototype, \"broadcastHeight\", {\n get: function () {\n return this.$$broadcastHeight;\n },\n enumerable: true,\n configurable: true\n });\n ResizeObservation.prototype.isActive = function () {\n var cr = ContentRect_1.ContentRect(this.target);\n return !!cr\n && (cr.width !== this.broadcastWidth\n || cr.height !== this.broadcastHeight);\n };\n return ResizeObservation;\n}());\nexports.ResizeObservation = ResizeObservation;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVzaXplT2JzZXJ2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBNEM7QUFFNUM7SUFlSSwyQkFBWSxNQUFlO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFWRCxzQkFBVyw2Q0FBYzthQUF6QjtZQUNJLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ2pDLENBQUM7OztPQUFBO0lBQ0Qsc0JBQVcsOENBQWU7YUFBMUI7WUFDSSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNsQyxDQUFDOzs7T0FBQTtJQU9NLG9DQUFRLEdBQWY7UUFDSSxJQUFNLEVBQUUsR0FBRyx5QkFBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwQyxPQUFPLENBQUMsQ0FBQyxFQUFFO2VBQ0osQ0FDQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxjQUFjO21CQUM3QixFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQ3hDLENBQUM7SUFDVixDQUFDO0lBQ0wsd0JBQUM7QUFBRCxDQUFDLEFBN0JELElBNkJDO0FBRVEsOENBQWlCIn0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentRect_1 = require(\"./ContentRect\");\nvar ResizeObserverEntry = /** @class */ (function () {\n function ResizeObserverEntry(target) {\n this.target = target;\n this.contentRect = ContentRect_1.ContentRect(target);\n }\n return ResizeObserverEntry;\n}());\nexports.ResizeObserverEntry = ResizeObserverEntry;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2ZXJFbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9SZXNpemVPYnNlcnZlckVudHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQTRDO0FBRTVDO0lBR0ksNkJBQVksTUFBZTtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLHlCQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNMLDBCQUFDO0FBQUQsQ0FBQyxBQVBELElBT0M7QUFFUSxrREFBbUIifQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ResizeObservation_1 = require(\"./ResizeObservation\");\nvar ResizeObserverEntry_1 = require(\"./ResizeObserverEntry\");\nvar resizeObservers = [];\nvar ResizeObserver = /** @class */ (function () {\n function ResizeObserver(callback) {\n /** @internal */\n this.$$observationTargets = [];\n /** @internal */\n this.$$activeTargets = [];\n /** @internal */\n this.$$skippedTargets = [];\n var message = callbackGuard(callback);\n if (message) {\n throw TypeError(message);\n }\n this.$$callback = callback;\n resizeObservers.push(this);\n }\n ResizeObserver.prototype.observe = function (target) {\n var message = targetGuard('observe', target);\n if (message) {\n throw TypeError(message);\n }\n var index = findTargetIndex(this.$$observationTargets, target);\n if (index > 0) {\n return;\n }\n this.$$observationTargets.push(new ResizeObservation_1.ResizeObservation(target));\n startLoop();\n };\n ResizeObserver.prototype.unobserve = function (target) {\n var message = targetGuard('unobserve', target);\n if (message) {\n throw TypeError(message);\n }\n var index = findTargetIndex(this.$$observationTargets, target);\n if (index < 0) {\n return;\n }\n this.$$observationTargets.splice(index, 1);\n checkStopLoop();\n };\n ResizeObserver.prototype.disconnect = function () {\n this.$$observationTargets = [];\n this.$$activeTargets = [];\n };\n return ResizeObserver;\n}());\nexports.ResizeObserver = ResizeObserver;\nfunction callbackGuard(callback) {\n if (typeof (callback) === 'undefined') {\n return \"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\";\n }\n if (typeof (callback) !== 'function') {\n return \"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\";\n }\n}\nfunction targetGuard(functionName, target) {\n if (typeof (target) === 'undefined') {\n return \"Failed to execute '\" + functionName + \"' on 'ResizeObserver': 1 argument required, but only 0 present.\";\n }\n if (!(target instanceof window.Element)) {\n return \"Failed to execute '\" + functionName + \"' on 'ResizeObserver': parameter 1 is not of type 'Element'.\";\n }\n}\nfunction findTargetIndex(collection, target) {\n for (var index = 0; index < collection.length; index += 1) {\n if (collection[index].target === target) {\n return index;\n }\n }\n return -1;\n}\nvar gatherActiveObservationsAtDepth = function (depth) {\n resizeObservers.forEach(function (ro) {\n ro.$$activeTargets = [];\n ro.$$skippedTargets = [];\n ro.$$observationTargets.forEach(function (ot) {\n if (ot.isActive()) {\n var targetDepth = calculateDepthForNode(ot.target);\n if (targetDepth > depth) {\n ro.$$activeTargets.push(ot);\n }\n else {\n ro.$$skippedTargets.push(ot);\n }\n }\n });\n });\n};\nvar hasActiveObservations = function () {\n return resizeObservers.some(function (ro) { return !!ro.$$activeTargets.length; });\n};\nvar hasSkippedObservations = function () {\n return resizeObservers.some(function (ro) { return !!ro.$$skippedTargets.length; });\n};\nvar broadcastActiveObservations = function () {\n var shallowestTargetDepth = Infinity;\n resizeObservers.forEach(function (ro) {\n if (!ro.$$activeTargets.length) {\n return;\n }\n var entries = [];\n ro.$$activeTargets.forEach(function (obs) {\n var entry = new ResizeObserverEntry_1.ResizeObserverEntry(obs.target);\n entries.push(entry);\n obs.$$broadcastWidth = entry.contentRect.width;\n obs.$$broadcastHeight = entry.contentRect.height;\n var targetDepth = calculateDepthForNode(obs.target);\n if (targetDepth < shallowestTargetDepth) {\n shallowestTargetDepth = targetDepth;\n }\n });\n ro.$$callback(entries, ro);\n ro.$$activeTargets = [];\n });\n return shallowestTargetDepth;\n};\nvar deliverResizeLoopErrorNotification = function () {\n var errorEvent = new window.ErrorEvent('ResizeLoopError', {\n message: 'ResizeObserver loop completed with undelivered notifications.',\n });\n window.dispatchEvent(errorEvent);\n};\nvar calculateDepthForNode = function (target) {\n var depth = 0;\n while (target.parentNode) {\n target = target.parentNode;\n depth += 1;\n }\n return depth;\n};\nvar notificationIteration = function () {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopErrorNotification();\n }\n};\nvar animationFrameCancelToken;\nvar startLoop = function () {\n if (animationFrameCancelToken)\n return;\n runLoop();\n};\nvar runLoop = function () {\n animationFrameCancelToken = window.requestAnimationFrame(function () {\n notificationIteration();\n runLoop();\n });\n};\nvar checkStopLoop = function () {\n if (animationFrameCancelToken && !resizeObservers.some(function (ro) { return !!ro.$$observationTargets.length; })) {\n window.cancelAnimationFrame(animationFrameCancelToken);\n animationFrameCancelToken = undefined;\n }\n};\nvar install = function () {\n return window.ResizeObserver = ResizeObserver;\n};\nexports.install = install;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzaXplT2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVzaXplT2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5REFBd0Q7QUFFeEQsNkRBQTREO0FBRTVELElBQU0sZUFBZSxHQUFHLEVBQXNCLENBQUM7QUFFL0M7SUFVSSx3QkFBWSxRQUFnQztRQVA1QyxnQkFBZ0I7UUFDVCx5QkFBb0IsR0FBRyxFQUF5QixDQUFDO1FBQ3hELGdCQUFnQjtRQUNULG9CQUFlLEdBQUcsRUFBeUIsQ0FBQztRQUNuRCxnQkFBZ0I7UUFDVCxxQkFBZ0IsR0FBRyxFQUF5QixDQUFDO1FBR2hELElBQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxJQUFJLE9BQU8sRUFBRTtZQUNULE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0IsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sZ0NBQU8sR0FBZCxVQUFlLE1BQWU7UUFDMUIsSUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJLE9BQU8sRUFBRTtZQUNULE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDWCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUkscUNBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM5RCxTQUFTLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU0sa0NBQVMsR0FBaEIsVUFB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","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":["ponyfill","$$observable","ownKeys","require$$0","MapOrSimilar","isPlainObject","createContext","useLayoutEffect","useEffect","useContext","useRef","useReducer","useState","get","set","debounce","createStore","reduxThunk","createStore$1","React","parseTypenames","root","constant","rgb","colorRgb","number","timeout","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","interpolateTransform","Selection","style","styleRemove","styleConstant","styleFunction","textConstant","textFunction","easeCubicInOut","identity","noevent","dragEnable","ReactPropTypesSecret","has","printWarning","ReactIs","assign","checkPropTypes","require$$1","_defineProperty","PropTypes","_extends","classNames"],"mappings":"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"} \ No newline at end of file diff --git a/dist/components/BackgroundGrid/index.d.ts b/dist/components/BackgroundGrid/index.d.ts deleted file mode 100644 index 22fe7db2..00000000 --- a/dist/components/BackgroundGrid/index.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import React, { HTMLAttributes } from 'react'; -import { GridType } from '../../types'; -interface GridProps extends HTMLAttributes { - backgroundType?: GridType; - gap?: number; - color?: string; - size?: number; -} -declare const Grid: React.MemoExoticComponent<({ gap, color, size, style, className, backgroundType, }: GridProps) => JSX.Element>; -export default Grid; diff --git a/dist/components/ConnectionLine/index.d.ts b/dist/components/ConnectionLine/index.d.ts deleted file mode 100644 index 7e3f44a6..00000000 --- a/dist/components/ConnectionLine/index.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { SVGAttributes } from 'react'; -import { ElementId, Node, Transform } from '../../types'; -interface ConnectionLineProps { - connectionSourceId: ElementId; - connectionPositionX: number; - connectionPositionY: number; - connectionLineType?: string | null; - nodes: Node[]; - transform: Transform; - isInteractive: boolean; - connectionLineStyle?: SVGAttributes<{}>; - className?: string; -} -declare const _default: ({ connectionSourceId, connectionLineStyle, connectionPositionX, connectionPositionY, connectionLineType, nodes, className, transform, isInteractive, }: ConnectionLineProps) => JSX.Element | null; -export default _default; diff --git a/dist/components/Edges/BezierEdge.d.ts b/dist/components/Edges/BezierEdge.d.ts deleted file mode 100644 index 7ed579ea..00000000 --- a/dist/components/Edges/BezierEdge.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import React from 'react'; -import { EdgeBezierProps } from '../../types'; -declare const _default: React.MemoExoticComponent<({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, style, }: EdgeBezierProps) => JSX.Element>; -export default _default; diff --git a/dist/components/Edges/StepEdge.d.ts b/dist/components/Edges/StepEdge.d.ts deleted file mode 100644 index 43e7f550..00000000 --- a/dist/components/Edges/StepEdge.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import React from 'react'; -import { EdgeProps } from '../../types'; -declare const _default: React.MemoExoticComponent<({ sourceX, sourceY, targetX, targetY, style }: EdgeProps) => JSX.Element>; -export default _default; diff --git a/dist/components/Edges/StraightEdge.d.ts b/dist/components/Edges/StraightEdge.d.ts deleted file mode 100644 index 43e7f550..00000000 --- a/dist/components/Edges/StraightEdge.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import React from 'react'; -import { EdgeProps } from '../../types'; -declare const _default: React.MemoExoticComponent<({ sourceX, sourceY, targetX, targetY, style }: EdgeProps) => JSX.Element>; -export default _default; diff --git a/dist/components/Edges/wrapEdge.d.ts b/dist/components/Edges/wrapEdge.d.ts deleted file mode 100644 index e7af40d3..00000000 --- a/dist/components/Edges/wrapEdge.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -import { ElementId, Edge, EdgeCompProps } from '../../types'; -interface EdgeWrapperProps { - id: ElementId; - source: ElementId; - target: ElementId; - type: any; - onClick: (edge: Edge) => void; - animated: boolean; - selected: boolean; - isInteractive: boolean; -} -declare const _default: (EdgeComponent: React.ComponentType) => React.MemoExoticComponent<({ id, source, target, type, animated, selected, onClick, isInteractive, ...rest }: EdgeWrapperProps) => JSX.Element>; -export default _default; diff --git a/dist/components/Handle/BaseHandle.d.ts b/dist/components/Handle/BaseHandle.d.ts deleted file mode 100644 index 6a947875..00000000 --- a/dist/components/Handle/BaseHandle.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import { HandleType, ElementId, Position, XYPosition, OnConnectFunc, Connection } from '../../types'; -declare type ValidConnectionFunc = (connection: Connection) => boolean; -declare type SetSourceIdFunc = (nodeId: ElementId | null) => void; -interface BaseHandleProps { - type: HandleType; - nodeId: ElementId; - onConnect: OnConnectFunc; - position: Position; - setSourceId: SetSourceIdFunc; - setPosition: (pos: XYPosition) => void; - isValidConnection: ValidConnectionFunc; - id?: ElementId | boolean; - className?: string; -} -declare const BaseHandle: React.MemoExoticComponent<({ type, nodeId, onConnect, position, setSourceId, setPosition, className, id, isValidConnection, ...rest }: BaseHandleProps) => JSX.Element>; -export default BaseHandle; diff --git a/dist/components/Handle/index.d.ts b/dist/components/Handle/index.d.ts deleted file mode 100644 index a5ad6f0e..00000000 --- a/dist/components/Handle/index.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import { HandleType, Position, OnConnectFunc } from '../../types'; -interface HandleProps { - type: HandleType; - position: Position; - onConnect?: OnConnectFunc; - isValidConnection?: () => boolean; -} -declare const Handle: React.MemoExoticComponent<({ onConnect, type, position, isValidConnection, ...rest }: HandleProps) => JSX.Element>; -export default Handle; diff --git a/dist/components/Nodes/DefaultNode.d.ts b/dist/components/Nodes/DefaultNode.d.ts deleted file mode 100644 index 70e9fc25..00000000 --- a/dist/components/Nodes/DefaultNode.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/// -import { NodeProps } from '../../types'; -declare const _default: ({ data, targetPosition, sourcePosition, style }: NodeProps) => JSX.Element; -export default _default; diff --git a/dist/components/Nodes/InputNode.d.ts b/dist/components/Nodes/InputNode.d.ts deleted file mode 100644 index 2042bd8c..00000000 --- a/dist/components/Nodes/InputNode.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/// -import { NodeProps } from '../../types'; -declare const _default: ({ data, style, sourcePosition }: NodeProps) => JSX.Element; -export default _default; diff --git a/dist/components/Nodes/OutputNode.d.ts b/dist/components/Nodes/OutputNode.d.ts deleted file mode 100644 index 420bb126..00000000 --- a/dist/components/Nodes/OutputNode.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/// -import { NodeProps } from '../../types'; -declare const _default: ({ data, style, targetPosition }: NodeProps) => JSX.Element; -export default _default; diff --git a/dist/components/Nodes/utils.d.ts b/dist/components/Nodes/utils.d.ts deleted file mode 100644 index 96d0a292..00000000 --- a/dist/components/Nodes/utils.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { HandleElement } from '../../types'; -export declare const getHandleBounds: (selector: string, nodeElement: HTMLDivElement, parentBounds: ClientRect | DOMRect, k: number) => HandleElement[] | null; diff --git a/dist/components/Nodes/wrapNode.d.ts b/dist/components/Nodes/wrapNode.d.ts deleted file mode 100644 index 37f121e3..00000000 --- a/dist/components/Nodes/wrapNode.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import React from 'react'; -import { NodeComponentProps, WrapNodeProps } from '../../types'; -declare const _default: (NodeComponent: React.ComponentType) => React.MemoExoticComponent<({ id, type, data, transform, xPos, yPos, selected, onClick, onNodeDragStop, style, isInteractive, sourcePosition, targetPosition, }: WrapNodeProps) => JSX.Element>; -export default _default; diff --git a/dist/components/NodesSelection/index.d.ts b/dist/components/NodesSelection/index.d.ts deleted file mode 100644 index 48418131..00000000 --- a/dist/components/NodesSelection/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * The nodes selection rectangle gets displayed when a user - * made a selectio with on or several nodes - */ -import React from 'react'; -declare const _default: React.MemoExoticComponent<() => JSX.Element>; -export default _default; diff --git a/dist/components/UserSelection/index.d.ts b/dist/components/UserSelection/index.d.ts deleted file mode 100644 index 6e6d4891..00000000 --- a/dist/components/UserSelection/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * The user selection rectangle gets displayed when a user drags the mouse while pressing shift - */ -import React from 'react'; -declare type UserSelectionProps = { - isInteractive: boolean; -}; -declare const _default: React.MemoExoticComponent<({ isInteractive }: UserSelectionProps) => JSX.Element | null>; -export default _default; diff --git a/dist/container/EdgeRenderer/index.d.ts b/dist/container/EdgeRenderer/index.d.ts deleted file mode 100644 index f6c8b145..00000000 --- a/dist/container/EdgeRenderer/index.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import React, { SVGAttributes } from 'react'; -interface EdgeRendererProps { - width: number; - height: number; - edgeTypes: any; - connectionLineStyle?: SVGAttributes<{}>; - connectionLineType?: string; - onElementClick?: () => void; -} -declare const EdgeRenderer: React.MemoExoticComponent<(props: EdgeRendererProps) => JSX.Element | null>; -export default EdgeRenderer; diff --git a/dist/container/EdgeRenderer/utils.d.ts b/dist/container/EdgeRenderer/utils.d.ts deleted file mode 100644 index 3c5e556f..00000000 --- a/dist/container/EdgeRenderer/utils.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { EdgeTypesType } from '../../types'; -export declare function createEdgeTypes(edgeTypes: EdgeTypesType): EdgeTypesType; diff --git a/dist/container/GraphView/index.d.ts b/dist/container/GraphView/index.d.ts deleted file mode 100644 index 55d531bd..00000000 --- a/dist/container/GraphView/index.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import React, { SVGAttributes } from 'react'; -import { Elements, NodeTypesType, EdgeTypesType, GridType, OnLoadFunc } from '../../types'; -export interface GraphViewProps { - elements: Elements; - onElementClick: () => void; - onElementsRemove: (elements: Elements) => void; - onNodeDragStop: () => void; - onConnect: () => void; - onLoad: OnLoadFunc; - onMove: () => void; - selectionKeyCode: number; - nodeTypes: NodeTypesType; - edgeTypes: EdgeTypesType; - connectionLineType: string; - connectionLineStyle: SVGAttributes<{}>; - deleteKeyCode: number; - showBackground: boolean; - backgroundGap: number; - backgroundColor: string; - backgroundType: GridType; - snapToGrid: boolean; - snapGrid: [number, number]; - onlyRenderVisibleNodes: boolean; - isInteractive: boolean; -} -declare const GraphView: React.MemoExoticComponent<({ nodeTypes, edgeTypes, onMove, onLoad, onElementClick, onNodeDragStop, connectionLineType, connectionLineStyle, selectionKeyCode, onElementsRemove, deleteKeyCode, elements, showBackground, backgroundGap, backgroundColor, backgroundType, onConnect, snapToGrid, snapGrid, onlyRenderVisibleNodes, isInteractive, }: GraphViewProps) => JSX.Element>; -export default GraphView; diff --git a/dist/container/NodeRenderer/index.d.ts b/dist/container/NodeRenderer/index.d.ts deleted file mode 100644 index e96b5ffa..00000000 --- a/dist/container/NodeRenderer/index.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import { NodeTypesType } from '../../types'; -interface NodeRendererProps { - nodeTypes: NodeTypesType; - onElementClick: () => void; - onNodeDragStop: () => void; - onlyRenderVisibleNodes?: boolean; -} -declare const NodeRenderer: React.MemoExoticComponent<({ onlyRenderVisibleNodes, ...props }: NodeRendererProps) => JSX.Element>; -export default NodeRenderer; diff --git a/dist/container/NodeRenderer/utils.d.ts b/dist/container/NodeRenderer/utils.d.ts deleted file mode 100644 index 408238fe..00000000 --- a/dist/container/NodeRenderer/utils.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { NodeTypesType } from '../../types'; -export declare function createNodeTypes(nodeTypes: NodeTypesType): NodeTypesType; diff --git a/dist/container/ReactFlow/index.d.ts b/dist/container/ReactFlow/index.d.ts deleted file mode 100644 index d882ec05..00000000 --- a/dist/container/ReactFlow/index.d.ts +++ /dev/null @@ -1,61 +0,0 @@ -import React, { SVGAttributes, HTMLAttributes } from 'react'; -import { Elements, NodeTypesType, EdgeTypesType, GridType, OnLoadFunc } from '../../types'; -import '../../style.css'; -export interface ReactFlowProps extends Omit, 'onLoad'> { - elements: Elements; - onElementClick: () => void; - onElementsRemove: (elements: Elements) => void; - onNodeDragStop: () => void; - onConnect: () => void; - onLoad: OnLoadFunc; - onMove: () => void; - nodeTypes: NodeTypesType; - edgeTypes: EdgeTypesType; - connectionLineType: string; - connectionLineStyle: SVGAttributes<{}>; - deleteKeyCode: number; - selectionKeyCode: number; - showBackground: boolean; - backgroundGap: number; - backgroundColor: string; - backgroundType: GridType; - snapToGrid: boolean; - snapGrid: [number, number]; - onlyRenderVisibleNodes: boolean; - isInteractive: boolean; -} -declare const ReactFlow: { - ({ style, onElementClick, elements, children, nodeTypes, edgeTypes, onLoad, onMove, onElementsRemove, onConnect, onNodeDragStop, connectionLineType, connectionLineStyle, deleteKeyCode, selectionKeyCode, showBackground, backgroundGap, backgroundType, backgroundColor, snapToGrid, snapGrid, onlyRenderVisibleNodes, isInteractive, }: ReactFlowProps): JSX.Element; - displayName: string; - defaultProps: { - onElementClick: () => void; - onElementsRemove: () => void; - onNodeDragStop: () => void; - onConnect: () => void; - onLoad: () => void; - onMove: () => void; - nodeTypes: { - input: ({ data, style, sourcePosition }: import("../../types").NodeProps) => JSX.Element; - default: ({ data, targetPosition, sourcePosition, style }: import("../../types").NodeProps) => JSX.Element; - output: ({ data, style, targetPosition }: import("../../types").NodeProps) => JSX.Element; - }; - edgeTypes: { - default: React.MemoExoticComponent<({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, style, }: import("../../types").EdgeBezierProps) => JSX.Element>; - straight: React.MemoExoticComponent<({ sourceX, sourceY, targetX, targetY, style }: import("../../types").EdgeProps) => JSX.Element>; - step: React.MemoExoticComponent<({ sourceX, sourceY, targetX, targetY, style }: import("../../types").EdgeProps) => JSX.Element>; - }; - connectionLineType: string; - connectionLineStyle: {}; - deleteKeyCode: number; - selectionKeyCode: number; - backgroundColor: string; - backgroundGap: number; - showBackground: boolean; - backgroundType: GridType; - snapToGrid: boolean; - snapGrid: number[]; - onlyRenderVisibleNodes: boolean; - isInteractive: boolean; - }; -}; -export default ReactFlow; diff --git a/dist/contexts/NodeIdContext.d.ts b/dist/contexts/NodeIdContext.d.ts deleted file mode 100644 index 386393b8..00000000 --- a/dist/contexts/NodeIdContext.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/// -import { ElementId } from '../types'; -declare type ContextProps = ElementId | null; -export declare const NodeIdContext: import("react").Context; -export declare const Provider: import("react").Provider; -export declare const Consumer: import("react").Consumer; -export default NodeIdContext; diff --git a/dist/hooks/useD3Zoom.d.ts b/dist/hooks/useD3Zoom.d.ts deleted file mode 100644 index e5bdfabe..00000000 --- a/dist/hooks/useD3Zoom.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { MutableRefObject } from 'react'; -declare const _default: (zoomPane: MutableRefObject, onMove: () => void, shiftPressed: boolean) => void; -export default _default; diff --git a/dist/hooks/useElementUpdater.d.ts b/dist/hooks/useElementUpdater.d.ts deleted file mode 100644 index 2b6c0bae..00000000 --- a/dist/hooks/useElementUpdater.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Elements } from '../types'; -declare const useElementUpdater: (elements: Elements) => void; -export default useElementUpdater; diff --git a/dist/hooks/useGlobalKeyHandler.d.ts b/dist/hooks/useGlobalKeyHandler.d.ts deleted file mode 100644 index 4e445cb8..00000000 --- a/dist/hooks/useGlobalKeyHandler.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Elements } from '../types'; -interface HookParams { - deleteKeyCode: number; - onElementsRemove: (elements: Elements) => void; -} -declare const _default: ({ deleteKeyCode, onElementsRemove }: HookParams) => void; -export default _default; diff --git a/dist/hooks/useKeyPress.d.ts b/dist/hooks/useKeyPress.d.ts deleted file mode 100644 index 49013e3a..00000000 --- a/dist/hooks/useKeyPress.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const _default: (keyCode: number) => boolean; -export default _default; diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 9e58e27e..00000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import ReactFlow from './container/ReactFlow'; -export default ReactFlow; -export { default as Handle } from './components/Handle'; -export { MiniMap, Controls } from './plugins'; -export { isNode, isEdge, removeElements, addEdge, getOutgoers, } from './utils/graph'; diff --git a/dist/plugins/Controls/index.d.ts b/dist/plugins/Controls/index.d.ts deleted file mode 100644 index 40c6eab7..00000000 --- a/dist/plugins/Controls/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import React from 'react'; -interface ControlProps extends React.HTMLAttributes { -} -declare const _default: ({ style, className }: ControlProps) => JSX.Element; -export default _default; diff --git a/dist/plugins/MiniMap/index.d.ts b/dist/plugins/MiniMap/index.d.ts deleted file mode 100644 index 7f934f4c..00000000 --- a/dist/plugins/MiniMap/index.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import { Node } from '../../types'; -declare type StringFunc = (node: Node) => string; -interface MiniMapProps extends React.HTMLAttributes { - nodeColor: string | StringFunc; - nodeBorderRadius: number; - maskColor: string; -} -declare const _default: ({ style, className, nodeColor, nodeBorderRadius, maskColor, }: MiniMapProps) => JSX.Element; -export default _default; diff --git a/dist/plugins/index.d.ts b/dist/plugins/index.d.ts deleted file mode 100644 index c978610d..00000000 --- a/dist/plugins/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as MiniMap } from './MiniMap'; -export { default as Controls } from './Controls'; diff --git a/dist/store/hooks.d.ts b/dist/store/hooks.d.ts deleted file mode 100644 index 81b6c58f..00000000 --- a/dist/store/hooks.d.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { StoreModel } from './index'; -export declare const useStoreActions: (mapActions: (actions: import("easy-peasy").ActionMapper<{ - selectedNodesBbox: import("../types").Rect; - d3Zoom: import("d3-zoom").ZoomBehavior | null; - d3Selection: import("d3-selection").Selection | null; - selection: import("../types").SelectionRect | null; - userSelectionRect: import("../types").SelectionRect; - connectionPosition: import("../types").XYPosition; - onConnect: import("../types").OnConnectFunc; - setOnConnect: import("easy-peasy").Action; - setNodes: import("easy-peasy").Action; - setEdges: import("easy-peasy").Action; - updateNodeDimensions: import("easy-peasy").Action; - updateNodePos: import("easy-peasy").Action; - setSelection: import("easy-peasy").Action; - setNodesSelection: import("easy-peasy").Action; - setSelectedElements: import("easy-peasy").Action; - updateSelection: import("easy-peasy").Action; - updateTransform: import("easy-peasy").Action; - updateSize: import("easy-peasy").Action; - initD3: import("easy-peasy").Action; - selection: import("d3-selection").Selection; - }>; - setSnapGrid: import("easy-peasy").Action; - setConnectionPosition: import("easy-peasy").Action; - setConnectionSourceId: import("easy-peasy").Action; - setInteractive: import("easy-peasy").Action; - setUserSelection: import("easy-peasy").Action; - updateUserSelection: import("easy-peasy").Action; - unsetUserSelection: import("easy-peasy").Action; -}, "1">) => Result) => Result; -export declare const useStoreDispatch: () => import("easy-peasy").Dispatch>; -export declare const useStoreState: (mapState: (state: import("easy-peasy").StateMapper<{ - width: number; - height: number; - transform: import("../types").Transform; - nodes: import("../types").Node[]; - edges: import("../types").Edge[]; - selectedElements: import("../types").Elements; - selectedNodesBbox: import("../types").Rect; - d3Zoom: import("d3-zoom").ZoomBehavior | null; - d3Selection: import("d3-selection").Selection | null; - d3Initialised: boolean; - nodesSelectionActive: boolean; - selectionActive: boolean; - selection: import("../types").SelectionRect | null; - userSelectionRect: import("../types").SelectionRect; - connectionSourceId: string | null; - connectionPosition: import("../types").XYPosition; - snapToGrid: boolean; - snapGrid: [number, number]; - isInteractive: boolean; - onConnect: import("../types").OnConnectFunc; -}, "1">) => Result, equalityFn?: ((prev: Result, next: Result) => boolean) | undefined) => Result; diff --git a/dist/store/index.d.ts b/dist/store/index.d.ts deleted file mode 100644 index 51e5df11..00000000 --- a/dist/store/index.d.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { Action } from 'easy-peasy'; -import { Selection as D3Selection, ZoomBehavior } from 'd3'; -import { ElementId, Elements, Transform, Node, Edge, Rect, Dimensions, XYPosition, OnConnectFunc, SelectionRect } from '../types'; -declare type TransformXYK = { - x: number; - y: number; - k: number; -}; -declare type NodePosUpdate = { - id: ElementId; - pos: XYPosition; -}; -declare type NodeDimensionUpdate = { - id: ElementId; - nodeElement: HTMLDivElement; -}; -declare type SelectionUpdate = { - isActive: boolean; - selection?: SelectionRect; -}; -declare type D3Init = { - zoom: ZoomBehavior; - selection: D3Selection; -}; -declare type SetSnapGrid = { - snapToGrid: boolean; - snapGrid: [number, number]; -}; -export interface StoreModel { - width: number; - height: number; - transform: Transform; - nodes: Node[]; - edges: Edge[]; - selectedElements: Elements; - selectedNodesBbox: Rect; - d3Zoom: ZoomBehavior | null; - d3Selection: D3Selection | null; - d3Initialised: boolean; - nodesSelectionActive: boolean; - selectionActive: boolean; - selection: SelectionRect | null; - userSelectionRect: SelectionRect; - connectionSourceId: ElementId | null; - connectionPosition: XYPosition; - snapToGrid: boolean; - snapGrid: [number, number]; - isInteractive: boolean; - onConnect: OnConnectFunc; - setOnConnect: Action; - setNodes: Action; - setEdges: Action; - updateNodeDimensions: Action; - updateNodePos: Action; - setSelection: Action; - setNodesSelection: Action; - setSelectedElements: Action; - updateSelection: Action; - updateTransform: Action; - updateSize: Action; - initD3: Action; - setSnapGrid: Action; - setConnectionPosition: Action; - setConnectionSourceId: Action; - setInteractive: Action; - setUserSelection: Action; - updateUserSelection: Action; - unsetUserSelection: Action; -} -declare const store: import("easy-peasy").Store>; -export default store; diff --git a/dist/types/index.d.ts b/dist/types/index.d.ts deleted file mode 100644 index d010a338..00000000 --- a/dist/types/index.d.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { CSSProperties, SVGAttributes } from 'react'; -export declare type ElementId = string; -export declare type Elements = Array; -export declare type Transform = [number, number, number]; -export declare enum Position { - Left = "left", - Top = "top", - Right = "right", - Bottom = "bottom" -} -export declare type XYPosition = { - x: number; - y: number; -}; -export declare enum GridType { - Lines = "lines", - Dots = "dots" -} -export declare type HandleType = 'source' | 'target'; -export declare type NodeTypesType = { - [key: string]: React.ReactNode; -}; -export declare type EdgeTypesType = NodeTypesType; -export interface Dimensions { - width: number; - height: number; -} -export interface Rect extends Dimensions, XYPosition { -} -export interface Box extends XYPosition { - x2: number; - y2: number; -} -export interface SelectionRect extends Rect { - startX: number; - startY: number; - draw: boolean; -} -export interface Node { - id: ElementId; - position: XYPosition; - type?: string; - __rg?: any; - data?: any; - style?: CSSProperties; - targetPosition?: Position; - sourcePosition?: Position; -} -export interface Edge { - id: ElementId; - type?: string; - source: ElementId; - target: ElementId; - style?: SVGAttributes<{}>; - animated?: boolean; -} -export interface EdgeProps { - sourceX: number; - sourceY: number; - targetX: number; - targetY: number; - style?: SVGAttributes<{}>; -} -export interface EdgeBezierProps extends EdgeProps { - sourcePosition: Position; - targetPosition: Position; -} -export interface NodeProps { - id: ElementId; - type: string; - data: any; - selected: boolean; - targetPosition?: Position; - sourcePosition?: Position; - style?: CSSProperties; -} -export interface NodeComponentProps { - id: ElementId; - type: string; - data: any; - selected?: boolean; - transform?: Transform; - xPos?: number; - yPos?: number; - targetPosition?: Position; - sourcePosition?: Position; - onClick?: (node: Node) => void | undefined; - onNodeDragStop?: () => any; - style?: CSSProperties; -} -export interface WrapNodeProps { - id: ElementId; - type: string; - data: any; - selected: boolean; - transform: Transform; - xPos: number; - yPos: number; - isInteractive: boolean; - onClick: (node: Node) => void | undefined; - onNodeDragStop: (node: Node) => void; - style?: CSSProperties; - sourcePosition?: Position; - targetPosition?: Position; -} -export declare type FitViewParams = { - padding: number; -}; -export declare type FitViewFunc = (fitViewOptions: FitViewParams) => void; -declare type OnLoadParams = { - zoomIn: () => void; - zoomOut: () => void; - fitView: FitViewFunc; -}; -export declare type OnLoadFunc = (params: OnLoadParams) => void; -export declare type Connection = { - source: ElementId | null; - target: ElementId | null; -}; -export declare type OnConnectFunc = (params: Connection) => void; -export interface HandleElement extends XYPosition, Dimensions { - id?: ElementId | null; - position: Position; -} -export interface EdgeCompProps { - id: ElementId; - source: ElementId; - target: ElementId; - type: any; - onClick?: (edge: Edge) => void; - animated?: boolean; - selected?: boolean; -} -export {}; diff --git a/dist/utils/graph.d.ts b/dist/utils/graph.d.ts deleted file mode 100644 index 265a6335..00000000 --- a/dist/utils/graph.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Node, Edge, Elements, Transform, XYPosition, Rect, FitViewParams } from '../types'; -export declare const isEdge: (element: Node | Edge) => boolean; -export declare const isNode: (element: Node | Edge) => boolean; -export declare const getOutgoers: (node: Node, elements: Elements) => Elements; -export declare const removeElements: (elementsToRemove: Elements, elements: Elements) => Elements; -export declare const addEdge: (edgeParams: Edge, elements: Elements) => Elements; -export declare const parseElement: (element: Node | Edge, transform: Transform, snapToGrid: boolean, snapGrid: [number, number]) => Node | Edge; -export declare const getBoundsofRects: (rect1: Rect, rect2: Rect) => Rect; -export declare const getRectOfNodes: (nodes: Node[]) => Rect; -export declare const graphPosToZoomedPos: ({ x, y }: XYPosition, [tx, ty, tScale]: Transform) => XYPosition; -export declare const getNodesInside: (nodes: Node[], rect: Rect, [tx, ty, tScale]?: Transform, partially?: boolean) => Node[]; -export declare const getConnectedEdges: (nodes: Node[], edges: Edge[]) => Edge[]; -export declare const fitView: ({ padding }?: FitViewParams) => void; -export declare const zoomIn: () => void; -export declare const zoomOut: () => void; diff --git a/dist/utils/index.d.ts b/dist/utils/index.d.ts deleted file mode 100644 index 07f04d96..00000000 --- a/dist/utils/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { MouseEvent as ReactMouseEvent } from 'react'; -export declare const isInputDOMNode: (e: MouseEvent | ReactMouseEvent | ReactMouseEvent | import("react").TouchEvent | TouchEvent | KeyboardEvent) => boolean; -export declare const getDimensions: (node: HTMLDivElement) => { - width: number; - height: number; -};