From c5632323c33072ea110f5ef4a6d94587b8402d45 Mon Sep 17 00:00:00 2001 From: Moritz Date: Tue, 15 Oct 2019 22:44:10 +0200 Subject: [PATCH] Develop (#35) * refactor(ts): add ReactFlowProps * Refactor/grid.tsx (#24) * chore(deps-dev): bump start-server-and-test from 1.10.4 to 1.10.5 Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 1.10.4 to 1.10.5. - [Release notes](https://github.com/bahmutov/start-server-and-test/releases) - [Commits](https://github.com/bahmutov/start-server-and-test/compare/v1.10.4...v1.10.5) Signed-off-by: dependabot-preview[bot] * chore(deps-dev): bump typescript from 3.6.3 to 3.6.4 Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.6.3 to 3.6.4. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v3.6.3...v3.6.4) Signed-off-by: dependabot-preview[bot] * refactor: grid.js -> grid.tsx * refactor(bg): remove unused renderer * refactor(connectionline): use ts * refactor(ts): edges * chore(build): update * Refactor/typescript (WIP) (#25) * refactor(store): use ts * refactor(edgewrapper): use ts * fix(handle): provide onConnect default func * refactor(nodeselection): use ts * refactor(userselction): use ts * refactor(plugins): use ts * refactor(hooks): use ts * refactor(nodes): use ts * refactor(edgerenderer): use ts * refactor(graphview): use ts * refactor(utils): rename js to ts * refactor(app): fix ts errors * fix(ts): errors * fix(app): ts errors * refactor(app): ts erros * refactor(app): ts errors * fix(utils): removeElements * feat(example): add empty renderer closes #34 * fix(connect): dont drag node on connect * chore(build): update --- .vscode/settings.json | 3 + dist/ReactFlow.esm.js | 3691 ++++---- dist/ReactFlow.esm.js.map | 2 +- dist/ReactFlow.js | 3691 ++++---- dist/ReactFlow.js.map | 2 +- example/package-lock.json | 7984 +---------------- example/src/Empty/index.js | 83 + example/src/index.js | 4 + package-lock.json | 17 +- package.json | 2 + src/components/BackgroundGrid/index.tsx | 85 + src/components/ConnectionLine/index.js | 49 - src/components/ConnectionLine/index.tsx | 67 + .../Edges/{BezierEdge.js => BezierEdge.tsx} | 6 +- .../Edges/{StepEdge.js => StepEdge.tsx} | 8 +- .../{StraightEdge.js => StraightEdge.tsx} | 8 +- src/components/Edges/wrapEdge.js | 37 - src/components/Edges/wrapEdge.tsx | 46 + .../Handle/{BaseHandle.js => BaseHandle.tsx} | 77 +- src/components/Handle/{index.js => index.tsx} | 38 +- .../Nodes/{DefaultNode.js => DefaultNode.tsx} | 7 +- .../Nodes/{InputNode.js => InputNode.tsx} | 7 +- .../Nodes/{OutputNode.js => OutputNode.tsx} | 7 +- src/components/Nodes/wrapNode.js | 166 - src/components/Nodes/wrapNode.tsx | 180 + .../NodesSelection/{index.js => index.tsx} | 37 +- .../UserSelection/{index.js => index.tsx} | 30 +- src/container/BackgroundRenderer/Grid.js | 84 - src/container/BackgroundRenderer/index.js | 34 - .../EdgeRenderer/{index.js => index.tsx} | 89 +- src/container/EdgeRenderer/utils.js | 24 - src/container/EdgeRenderer/utils.ts | 28 + .../GraphView/{index.js => index.tsx} | 37 +- src/container/NodeRenderer/index.js | 59 - src/container/NodeRenderer/index.tsx | 71 + src/container/NodeRenderer/utils.js | 26 - src/container/NodeRenderer/utils.ts | 29 + .../ReactFlow/{index.js => index.tsx} | 54 +- .../{NodeIdContext.js => NodeIdContext.ts} | 8 +- src/custom.d.ts | 13 + src/hooks/{useD3Zoom.js => useD3Zoom.ts} | 10 +- ...ElementUpdater.js => useElementUpdater.ts} | 17 +- ...alKeyHandler.js => useGlobalKeyHandler.ts} | 13 +- src/hooks/{useKeyPress.js => useKeyPress.ts} | 13 +- src/plugins/Controls/{index.js => index.tsx} | 17 +- src/plugins/MiniMap/{index.js => index.tsx} | 32 +- src/plugins/{index.js => index.ts} | 0 src/store/hooks.ts | 9 + src/store/index.js | 30 - src/store/{actions.js => index.ts} | 119 +- src/types/index.ts | 137 + src/utils/{graph.js => graph.ts} | 79 +- src/utils/index.js | 10 - src/utils/index.ts | 12 + tsconfig.json | 8 +- 55 files changed, 4374 insertions(+), 13022 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 example/src/Empty/index.js create mode 100644 src/components/BackgroundGrid/index.tsx delete mode 100644 src/components/ConnectionLine/index.js create mode 100644 src/components/ConnectionLine/index.tsx rename src/components/Edges/{BezierEdge.js => BezierEdge.tsx} (87%) rename src/components/Edges/{StepEdge.js => StepEdge.tsx} (71%) rename src/components/Edges/{StraightEdge.js => StraightEdge.tsx} (53%) delete mode 100644 src/components/Edges/wrapEdge.js create mode 100644 src/components/Edges/wrapEdge.tsx rename src/components/Handle/{BaseHandle.js => BaseHandle.tsx} (57%) rename src/components/Handle/{index.js => index.tsx} (50%) rename src/components/Nodes/{DefaultNode.js => DefaultNode.tsx} (62%) rename src/components/Nodes/{InputNode.js => InputNode.tsx} (58%) rename src/components/Nodes/{OutputNode.js => OutputNode.tsx} (58%) delete mode 100644 src/components/Nodes/wrapNode.js create mode 100644 src/components/Nodes/wrapNode.tsx rename src/components/NodesSelection/{index.js => index.tsx} (64%) rename src/components/UserSelection/{index.js => index.tsx} (79%) delete mode 100644 src/container/BackgroundRenderer/Grid.js delete mode 100644 src/container/BackgroundRenderer/index.js rename src/container/EdgeRenderer/{index.js => index.tsx} (64%) delete mode 100644 src/container/EdgeRenderer/utils.js create mode 100644 src/container/EdgeRenderer/utils.ts rename src/container/GraphView/{index.js => index.tsx} (74%) delete mode 100644 src/container/NodeRenderer/index.js create mode 100644 src/container/NodeRenderer/index.tsx delete mode 100644 src/container/NodeRenderer/utils.js create mode 100644 src/container/NodeRenderer/utils.ts rename src/container/ReactFlow/{index.js => index.tsx} (74%) rename src/contexts/{NodeIdContext.js => NodeIdContext.ts} (52%) create mode 100644 src/custom.d.ts rename src/hooks/{useD3Zoom.js => useD3Zoom.ts} (83%) rename src/hooks/{useElementUpdater.js => useElementUpdater.ts} (64%) rename src/hooks/{useGlobalKeyHandler.js => useGlobalKeyHandler.ts} (67%) rename src/hooks/{useKeyPress.js => useKeyPress.ts} (62%) rename src/plugins/Controls/{index.js => index.tsx} (69%) rename src/plugins/MiniMap/{index.js => index.tsx} (65%) rename src/plugins/{index.js => index.ts} (100%) create mode 100644 src/store/hooks.ts delete mode 100644 src/store/index.js rename src/store/{actions.js => index.ts} (53%) create mode 100644 src/types/index.ts rename src/utils/{graph.js => graph.ts} (59%) delete mode 100644 src/utils/index.js create mode 100644 src/utils/index.ts diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..3662b3700 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib" +} \ No newline at end of file diff --git a/dist/ReactFlow.esm.js b/dist/ReactFlow.esm.js index a5a86999d..6fe36b34b 100644 --- a/dist/ReactFlow.esm.js +++ b/dist/ReactFlow.esm.js @@ -1,92 +1,6 @@ import React, { createContext, useContext, useRef, useReducer, useLayoutEffect, useEffect, memo, useState, useMemo } from 'react'; import reactDom from 'react-dom'; -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; -} - -/** - * 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; - -function emptyFunction() {} -function emptyFunctionWithReset() {} -emptyFunctionWithReset.resetWarningCache = emptyFunction; - -var factoryWithThrowingShims = function() { - function shim(props, propName, componentName, location, propFullName, secret) { - if (secret === ReactPropTypesSecret_1) { - // It is still safe when called from React. - return; - } - 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; - } shim.isRequired = shim; - function getShim() { - return shim; - } // Important! - // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. - var ReactPropTypes = { - array: shim, - bool: shim, - func: shim, - number: shim, - object: shim, - string: shim, - symbol: shim, - - any: shim, - arrayOf: getShim, - element: shim, - elementType: shim, - instanceOf: getShim, - node: shim, - objectOf: getShim, - oneOf: getShim, - oneOfType: getShim, - shape: getShim, - exact: getShim, - - checkPropTypes: emptyFunctionWithReset, - resetWarningCache: emptyFunction - }; - - 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. - */ - -{ - // By explicitly using `prop-types` you are opting into new production behavior. - // http://fb.me/prop-types-in-prod - module.exports = factoryWithThrowingShims(); -} -}); - 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"; @@ -1977,6 +1891,24 @@ function createStoreActionsHook(Context) { }; } 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 createTypedHooks() { + return { + useStoreActions: useStoreActions, + useStoreDispatch: useStoreDispatch, + useStoreState: useStoreState, + useStore: useStore + }; +} function _extends() { _extends = Object.assign || function (target) { @@ -2590,169 +2522,54 @@ var StoreProvider = function StoreProvider(_ref) { setAutoFreeze(false); -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; -} - -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 ownKeys$2(object, enumerableOnly) { - var keys = Object.keys(object); - - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - keys.push.apply(keys, symbols); - } - - return keys; -} - -function _objectSpread2$1(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - - if (i % 2) { - ownKeys$2(source, true).forEach(function (key) { - _defineProperty$1(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys$2(source).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - - return target; -} - -function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - - for (i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; - } - - return target; -} - -function _objectWithoutProperties(source, excluded) { - if (source == null) return {}; - - var target = _objectWithoutPropertiesLoose(source, excluded); - - var key, i; - - if (Object.getOwnPropertySymbols) { - var sourceSymbolKeys = Object.getOwnPropertySymbols(source); - - for (i = 0; i < sourceSymbolKeys.length; i++) { - key = sourceSymbolKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; - target[key] = source[key]; - } - } - - return target; -} - -function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); -} - -function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); -} - -function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - - return arr2; - } -} - -function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; -} - -function _iterableToArray(iter) { - if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); -} - -function _iterableToArrayLimit(arr, i) { - if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { - return; - } - - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; -} - -function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance"); -} - -function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); +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() {}}; @@ -5923,365 +5740,279 @@ var fastDeepEqual = function equal(a, b) { return a!==a && b!==b; }; -var actions = { - setOnConnect: action(function (state, onConnect) { - state.onConnect = onConnect; - }), - setNodes: action(function (state, nodes) { - state.nodes = nodes; - }), - setEdges: action(function (state, edges) { - state.edges = edges; - }), - updateNodeData: action(function (state, _ref) { - var id = _ref.id, - data = _objectWithoutProperties(_ref, ["id"]); - - state.nodes.forEach(function (n) { - if (n.id === id) { - n.__rg = _objectSpread2$1({}, n.__rg, {}, data); - } - }); - }), - updateNodePos: action(function (state, _ref2) { - var id = _ref2.id, - pos = _ref2.pos; - state.nodes.forEach(function (n) { - if (n.id === id) { - n.__rg = _objectSpread2$1({}, n.__rg, { - position: pos - }); - } - }); - }), - setSelection: action(function (state, isActive) { - state.selectionActive = isActive; - }), - setNodesSelection: action(function (state, _ref3) { - var isActive = _ref3.isActive, - selection = _ref3.selection; - - if (!isActive) { - state.nodesSelectionActive = false; - state.selectedElements = []; - return; - } - - var selectedNodes = getNodesInside(state.nodes, selection, state.transform); - var selectedNodesBbox = getBoundingBox(selectedNodes); - state.selection = selection; - state.nodesSelectionActive = true; - state.selectedNodesBbox = selectedNodesBbox; - state.nodesSelectionActive = true; - }), - 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 = [].concat(_toConsumableArray(selectedNodes), _toConsumableArray(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, _ref4) { - var zoom = _ref4.zoom, - selection = _ref4.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; - }) -}; - -var store = createStore$1(_objectSpread2$1({ - 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: {}, - connectionSourceId: null, - connectionPosition: { - x: 0, - y: 0 - }, - onConnect: function onConnect() {} -}, actions)); - -var isFunction = function isFunction(obj) { - return !!(obj && obj.constructor && obj.call && obj.apply); -}; -var isDefined = function isDefined(obj) { - return typeof obj !== 'undefined'; -}; -var inInputDOMNode = function inInputDOMNode(e) { - return e && e.target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.nodeName); -}; -var getDimensions = function getDimensions() { - var node = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - return { - width: node.offsetWidth, - height: node.offsetHeight - }; +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, + connectionSourceId: null, + connectionPosition: { x: 0, y: 0 }, + 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; + }), + updateNodeData: action(function (state, _a) { + var id = _a.id, data = __rest(_a, ["id"]); + state.nodes.forEach(function (n) { + if (n.id === id) { + n.__rg = __assign(__assign({}, n.__rg), data); + } + }); + }), + updateNodePos: action(function (state, _a) { + var id = _a.id, pos = _a.pos; + state.nodes.forEach(function (n) { + if (n.id === id) { + n.__rg = __assign(__assign({}, n.__rg), { position: pos }); + } + }); + }), + setSelection: action(function (state, isActive) { + state.selectionActive = isActive; + }), + setNodesSelection: action(function (state, _a) { + var isActive = _a.isActive, selection = _a.selection; + if (!isActive) { + state.nodesSelectionActive = false; + state.selectedElements = []; + return; + } + var selectedNodes = getNodesInside(state.nodes, selection, state.transform); + var selectedNodesBbox = getBoundingBox(selectedNodes); + state.selection = selection; + state.nodesSelectionActive = true; + state.selectedNodesBbox = selectedNodesBbox; + state.nodesSelectionActive = true; + }), + 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; + }) +}; +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)); + }); +}; +function getEdgeId(edgeParams) { + return "reactflow__edge-" + edgeParams.source + "-" + edgeParams.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, transform) { + var x = _a.x, y = _a.y; + var rendererX = (x - transform[0]) * (1 / transform[2]); + var rendererY = (y - transform[1]) * (1 / transform[2]); + return { + x: rendererX, + y: rendererY + }; +}; +var parseElement = function (element, transform) { + 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), + width: null, + height: null, + handleBounds: {} + } }); +}; +var getBoundingBox = function (nodes) { + var bbox = nodes.reduce(function (res, node) { + var position = node.__rg.position; + var x2 = position.x + node.__rg.width; + var y2 = position.y + node.__rg.height; + if (position.x < res.minX) { + res.minX = position.x; + } + if (x2 > res.maxX) { + res.maxX = x2; + } + if (position.y < res.minY) { + res.minY = position.y; + } + if (y2 > res.maxY) { + res.maxY = y2; + } + return res; + }, { + minX: Number.MAX_VALUE, + minY: Number.MAX_VALUE, + maxX: 0, + maxY: 0 + }); + return { + x: bbox.minX, + y: bbox.minY, + width: bbox.maxX - bbox.minX, + height: bbox.maxY - bbox.minY + }; +}; +var getNodesInside = function (nodes, bbox, transform, partially) { + if (transform === void 0) { transform = [0, 0, 1]; } + if (partially === void 0) { partially = false; } + return nodes + .filter(function (n) { + var bboxPos = { + x: (bbox.x - transform[0]) * (1 / transform[2]), + y: (bbox.y - transform[1]) * (1 / transform[2]) + }; + var bboxWidth = bbox.width * (1 / transform[2]); + var bboxHeight = bbox.height * (1 / transform[2]); + var _a = n.__rg, position = _a.position, width = _a.width, height = _a.height; + var nodeWidth = partially ? -width : width; + var nodeHeight = partially ? 0 : height; + var offsetX = partially ? width : 0; + var offsetY = partially ? height : 0; + return ((position.x + offsetX > bboxPos.x && (position.x + nodeWidth) < (bboxPos.x + bboxWidth)) && + (position.y + offsetY > bboxPos.y && (position.y + nodeHeight) < (bboxPos.y + bboxHeight))); + }); +}; +var getConnectedEdges = function (nodes, edges) { + var nodeIds = nodes.map(function (n) { return n.id; }); + return edges.filter(function (e) { + var hasSourceHandleId = e.source.includes('__'); + var hasTargetHandleId = e.target.includes('__'); + var sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source; + var targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target; + return nodeIds.includes(sourceId) || nodeIds.includes(targetId); + }); +}; +var fitView = function (_a) { + var padding = (_a === void 0 ? { padding: 0 } : _a).padding; + var state = store.getState(); + var bounds = getBoundingBox(state.nodes); + var maxBoundsSize = Math.max(bounds.width, bounds.height); + var k = Math.min(state.width, state.height) / (maxBoundsSize + (maxBoundsSize * padding)); + var boundsCenterX = bounds.x + (bounds.width / 2); + var boundsCenterY = bounds.y + (bounds.height / 2); + var transform = [(state.width / 2) - (boundsCenterX * k), (state.height / 2) - (boundsCenterY * k)]; + var fittedTransform = identity$1.translate(transform[0], transform[1]).scale(k); + state.d3Selection.call(state.d3Zoom.transform, fittedTransform); +}; +var zoomIn = function () { + var state = store.getState(); + state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] + 0.2); +}; +var zoomOut = function () { + var state = store.getState(); + state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] - 0.2); }; -var isEdge = function isEdge(element) { - return element.source && element.target; -}; -var isNode = function isNode(element) { - return !element.source && !element.target; -}; -var getOutgoers = function getOutgoers(node, elements) { - if (!isNode(node)) { - return []; - } +function renderNode(node, props, state) { + var nodeType = node.type || 'default'; + if (!props.nodeTypes[nodeType]) { + console.warn("No node type found for type \"" + nodeType + "\". Using fallback type \"default\"."); + } + var NodeComponent = (props.nodeTypes[nodeType] || props.nodeTypes.default); + var selected = state.selectedElements + .filter(isNode) + .map(function (e) { return e.id; }) + .includes(node.id); + return (React.createElement(NodeComponent, { key: node.id, id: node.id, type: node.type, data: node.data, xPos: node.__rg.position.x, yPos: node.__rg.position.y, onClick: props.onElementClick, onNodeDragStop: props.onNodeDragStop, transform: state.transform, selected: selected, style: node.style })); +} +var NodeRenderer = memo(function (props) { + var state = useStoreState$1(function (s) { return ({ + nodes: s.nodes, + transform: s.transform, + selectedElements: s.selectedElements + }); }); + var transform = state.transform, nodes = state.nodes; + var transformStyle = { transform: "translate(" + transform[0] + "px," + transform[1] + "px) scale(" + transform[2] + ")" }; + return (React.createElement("div", { className: "react-flow__nodes", style: transformStyle }, nodes.map(function (node) { return renderNode(node, props, state); }))); +}); +NodeRenderer.displayName = 'NodeRenderer'; - 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 removeElements(elementsToRemove, elements) { - var nodeIdsToRemove = elementsToRemove.map(function (n) { - return n.id; - }); - return elements.filter(function (e) { - return !nodeIdsToRemove.includes(e.id) && !nodeIdsToRemove.includes(e.target) && !nodeIdsToRemove.includes(e.source); - }); -}; +function unwrapExports (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} -function getEdgeId(params) { - return "reactflow__edge-".concat(params.source, "-").concat(params.target); +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; } -var addEdge = function addEdge(edgeParams, elements) { - if (!edgeParams.source || !edgeParams.target) { - throw new Error('Can not create edge. An edge needs a source and a target'); - } +var classnames = createCommonjsModule(function (module) { +/*! + Copyright (c) 2017 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/* global define */ - return elements.concat(_objectSpread2$1({}, edgeParams, { - id: isDefined(edgeParams.id) ? edgeParams.id : getEdgeId(edgeParams) - })); -}; - -var pointToRendererPoint = function pointToRendererPoint(_ref, transform) { - var x = _ref.x, - y = _ref.y; - var rendererX = (x - transform[0]) * (1 / [transform[2]]); - var rendererY = (y - transform[1]) * (1 / [transform[2]]); - return { - x: rendererX, - y: rendererY - }; -}; - -var parseElement = function parseElement(e, transform) { - if (!e.id) { - throw new Error('All elements (nodes and edges) need to have an id.'); - } - - if (isEdge(e)) { - return _objectSpread2$1({}, e, { - id: e.id.toString(), - type: e.type || 'default' - }); - } - - return _objectSpread2$1({}, e, { - id: e.id.toString(), - type: e.type || 'default', - __rg: { - position: pointToRendererPoint(e.position, transform), - width: null, - height: null, - handleBounds: {} - } - }); -}; -var getBoundingBox = function getBoundingBox(nodes) { - var bbox = nodes.reduce(function (res, node) { - var position = node.__rg.position; - var x2 = position.x + node.__rg.width; - var y2 = position.y + node.__rg.height; - - if (position.x < res.minX) { - res.minX = position.x; - } - - if (x2 > res.maxX) { - res.maxX = x2; - } - - if (position.y < res.minY) { - res.minY = position.y; - } - - if (y2 > res.maxY) { - res.maxY = y2; - } - - return res; - }, { - minX: Number.MAX_VALUE, - minY: Number.MAX_VALUE, - maxX: 0, - maxY: 0 - }); - return { - x: bbox.minX, - y: bbox.minY, - width: bbox.maxX - bbox.minX, - height: bbox.maxY - bbox.minY - }; -}; -var getNodesInside = function getNodesInside(nodes, bbox) { - var transform = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [0, 0, 1]; - var partially = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - return nodes.filter(function (n) { - var bboxPos = { - x: (bbox.x - transform[0]) * (1 / transform[2]), - y: (bbox.y - transform[1]) * (1 / transform[2]) - }; - var bboxWidth = bbox.width * (1 / transform[2]); - var bboxHeight = bbox.height * (1 / transform[2]); - var _n$__rg = n.__rg, - position = _n$__rg.position, - width = _n$__rg.width, - height = _n$__rg.height; - var nodeWidth = partially ? -width : width; - var nodeHeight = partially ? 0 : height; - var offsetX = partially ? width : 0; - var offsetY = partially ? height : 0; - return position.x + offsetX > bboxPos.x && position.x + nodeWidth < bboxPos.x + bboxWidth && position.y + offsetY > bboxPos.y && position.y + nodeHeight < bboxPos.y + bboxHeight; - }); -}; -var getConnectedEdges = function getConnectedEdges(nodes, edges) { - var nodeIds = nodes.map(function (n) { - return n.id; - }); - return edges.filter(function (e) { - var hasSourceHandleId = e.source.includes('__'); - var hasTargetHandleId = e.target.includes('__'); - var sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source; - var targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target; - return nodeIds.includes(sourceId) || nodeIds.includes(targetId); - }); -}; -var fitView = function fitView() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref2$padding = _ref2.padding, - padding = _ref2$padding === void 0 ? 0 : _ref2$padding; - - var state = store.getState(); - var bounds = getBoundingBox(state.nodes); - var maxBoundsSize = Math.max(bounds.width, bounds.height); - var k = Math.min(state.width, state.height) / (maxBoundsSize + maxBoundsSize * padding); - var boundsCenterX = bounds.x + bounds.width / 2; - var boundsCenterY = bounds.y + bounds.height / 2; - var transform = [state.width / 2 - boundsCenterX * k, state.height / 2 - boundsCenterY * k]; - var fittedTransform = identity$1.translate(transform[0], transform[1]).scale(k); - state.d3Selection.call(state.d3Zoom.transform, fittedTransform); -}; -var zoomIn = function zoomIn() { - var state = store.getState(); - state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] + 0.2); -}; -var zoomOut = function zoomOut() { - var state = store.getState(); - state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] - 0.2); -}; - -function renderNode(d, props, state) { - var nodeType = d.type || 'default'; - - if (!props.nodeTypes[nodeType]) { - console.warn("No node type found for type \"".concat(nodeType, "\". Using fallback type \"default\".")); - } - - var NodeComponent = props.nodeTypes[nodeType] || props.nodeTypes["default"]; - var selected = state.selectedElements.filter(isNode).map(function (e) { - return e.id; - }).includes(d.id); - return React.createElement(NodeComponent, { - key: d.id, - id: d.id, - type: d.type, - data: d.data, - xPos: d.__rg.position.x, - yPos: d.__rg.position.y, - onClick: props.onElementClick, - onNodeDragStop: props.onNodeDragStop, - transform: state.transform, - selected: selected, - style: d.style - }); -} - -var NodeRenderer = memo(function (props) { - var state = useStoreState(function (s) { - return { - nodes: s.nodes, - transform: s.transform, - selectedElements: s.selectedElements - }; - }); - var transform = state.transform, - nodes = state.nodes; - var transformStyle = { - transform: "translate(".concat(transform[0], "px,").concat(transform[1], "px) scale(").concat(transform[2], ")") - }; - return React.createElement("div", { - className: "react-flow__nodes", - style: transformStyle - }, nodes.map(function (d) { - return renderNode(d, props, state); - })); -}); -NodeRenderer.displayName = 'NodeRenderer'; -NodeRenderer.whyDidYouRender = false; - -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 () { +(function () { var hasOwn = {}.hasOwnProperty; @@ -6322,486 +6053,310 @@ var classnames = createCommonjsModule(function (module) { }()); }); -var ConnectionLine = (function (props) { - var _useState = useState(null), - _useState2 = _slicedToArray(_useState, 2), - sourceNode = _useState2[0], - setSourceNode = _useState2[1]; - - var hasHandleId = props.connectionSourceId.includes('__'); - var sourceIdSplitted = props.connectionSourceId.split('__'); - var nodeId = sourceIdSplitted[0]; - var handleId = hasHandleId ? sourceIdSplitted[1] : null; - useEffect(function () { - setSourceNode(props.nodes.find(function (n) { - return n.id === nodeId; - })); - }, []); - - if (!sourceNode) { - return null; - } +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; + 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) { + return null; + } + var edgeClasses = classnames('react-flow__edge', 'connection', className); + var sourceHandle = handleId ? + sourceNode.__rg.handleBounds.source.find(function (d) { return d.id === handleId; }) : + sourceNode.__rg.handleBounds.source[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.createElement("g", { className: edgeClasses }, + React.createElement("path", __assign({ d: dAttr }, connectionLineStyle)))); +}); - var style = props.connectionLineStyle || {}; - var className = classnames('react-flow__edge', 'connection', props.className); - var sourceHandle = handleId ? sourceNode.__rg.handleBounds.source.find(function (d) { - return d.id === handleId; - }) : sourceNode.__rg.handleBounds.source[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 = (props.connectionPositionX - props.transform[0]) * (1 / props.transform[2]); - var targetY = (props.connectionPositionY - props.transform[1]) * (1 / props.transform[2]); - var dAttr = ''; - - if (props.connectionLineType === 'bezier') { - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - dAttr = "M".concat(sourceX, ",").concat(sourceY, " C").concat(sourceX, ",").concat(centerY, " ").concat(targetX, ",").concat(centerY, " ").concat(targetX, ",").concat(targetY); - } else { - dAttr = "M".concat(sourceX, ",").concat(sourceY, " ").concat(targetX, ",").concat(targetY); - } +function getHandlePosition(position, node, handle) { + if (handle === void 0) { handle = null; } + if (!handle) { + switch (position) { + case 'top': return { + x: node.__rg.width / 2, + y: 0 + }; + case 'right': return { + x: node.__rg.width, + y: node.__rg.height / 2 + }; + case 'bottom': return { + x: node.__rg.width / 2, + y: node.__rg.height + }; + case 'left': return { + x: 0, + y: node.__rg.height / 2 + }; + } + return null; + } + switch (position) { + case 'top': return { + x: handle.x + (handle.width / 2), + y: handle.y + }; + case 'right': return { + x: handle.x + handle.width, + y: handle.y + (handle.height / 2) + }; + case 'bottom': return { + x: handle.x + (handle.width / 2), + y: handle.y + handle.height + }; + case '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, state) { + var edgeType = edge.type || 'default'; + var hasSourceHandleId = edge.source.includes('__'); + var hasTargetHandleId = edge.target.includes('__'); + var sourceId = hasSourceHandleId ? edge.source.split('__')[0] : edge.source; + var targetId = hasTargetHandleId ? edge.target.split('__')[0] : edge.target; + var sourceHandleId = hasSourceHandleId ? edge.source.split('__')[1] : null; + var targetHandleId = hasTargetHandleId ? edge.target.split('__')[1] : null; + var sourceNode = state.nodes.find(function (n) { return n.id === sourceId; }); + var targetNode = state.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); + } + 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 : 'bottom'; + var targetPosition = targetHandle ? targetHandle.position : 'top'; + var _a = getEdgePositions(sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition), sourceX = _a.sourceX, sourceY = _a.sourceY, targetX = _a.targetX, targetY = _a.targetY; + var selected = state.selectedElements + .filter(isEdge) + .find(function (elm) { return elm.source === sourceId && elm.target === targetId; }); + return (React.createElement(EdgeComponent, { key: edge.id, id: edge.id, type: edge.type, onClick: props.onElementClick, selected: selected, 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 })); +} +var EdgeRenderer = memo(function (_a) { + var width = _a.width, height = _a.height, connectionLineStyle = _a.connectionLineStyle, connectionLineType = _a.connectionLineType, rest = __rest(_a, ["width", "height", "connectionLineStyle", "connectionLineType"]); + var state = useStoreState$1(function (s) { return ({ + nodes: s.nodes, + edges: s.edges, + transform: s.transform, + selectedElements: s.selectedElements, + connectionSourceId: s.connectionSourceId, + position: s.connectionPosition + }); }); + if (!width) { + return null; + } + var transform = state.transform, edges = state.edges, nodes = state.nodes, connectionSourceId = state.connectionSourceId, position = state.position; + var transformStyle = "translate(" + transform[0] + "," + transform[1] + ") scale(" + transform[2] + ")"; + return (React.createElement("svg", { width: width, height: height, className: "react-flow__edges" }, + React.createElement("g", { transform: transformStyle }, + edges.map(function (e) { return renderEdge(e, __assign({ width: width, height: height, connectionLineStyle: connectionLineStyle, connectionLineType: connectionLineType }, rest), state); }), + connectionSourceId && (React.createElement(ConnectionLine, { nodes: nodes, connectionSourceId: connectionSourceId, connectionPositionX: position.x, connectionPositionY: position.y, transform: transform, connectionLineStyle: connectionLineStyle, connectionLineType: connectionLineType }))))); +}); +EdgeRenderer.displayName = 'EdgeRenderer'; - return React.createElement("g", { - className: className - }, React.createElement("path", _extends$1({ - d: dAttr - }, style))); +var initialRect = { + startX: 0, + startY: 0, + x: 0, + y: 0, + width: 0, + height: 0, + draw: false +}; +function getMousePosition(evt) { + var reactFlowNode = document.querySelector('.react-flow'); + if (!reactFlowNode) { + return false; + } + var containerBounds = reactFlowNode.getBoundingClientRect(); + return { + x: evt.clientX - containerBounds.left, + y: evt.clientY - containerBounds.top, + }; +} +var UserSelection = memo(function () { + var selectionPane = useRef(null); + var _a = useState(initialRect), rect = _a[0], setRect = _a[1]; + var setSelection = useStoreActions$1(function (a) { return a.setSelection; }); + var updateSelection = useStoreActions$1(function (a) { return a.updateSelection; }); + var setNodesSelection = useStoreActions$1(function (a) { return a.setNodesSelection; }); + useEffect(function () { + function onMouseDown(evt) { + var mousePos = getMousePosition(evt); + if (!mousePos) { + return false; + } + setRect(function (currentRect) { return (__assign(__assign({}, currentRect), { startX: mousePos.x, startY: mousePos.y, x: mousePos.x, y: mousePos.y, draw: true })); }); + setSelection(true); + } + function onMouseMove(evt) { + setRect(function (currentRect) { + if (!currentRect.draw) { + return currentRect; + } + var mousePos = getMousePosition(evt); + if (!mousePos) { + return currentRect; + } + var negativeX = mousePos.x < currentRect.startX; + var negativeY = mousePos.y < currentRect.startY; + var nextRect = __assign(__assign({}, currentRect), { x: negativeX ? mousePos.x : currentRect.x, y: negativeY ? mousePos.y : currentRect.y, width: negativeX ? currentRect.startX - mousePos.x : mousePos.x - currentRect.startX, height: negativeY ? currentRect.startY - mousePos.y : mousePos.y - currentRect.startY }); + updateSelection(nextRect); + return nextRect; + }); + } + function onMouseUp() { + setRect(function (currentRect) { + setNodesSelection({ isActive: true, selection: currentRect }); + setSelection(false); + return __assign(__assign({}, currentRect), { draw: false }); + }); + } + selectionPane.current.addEventListener('mousedown', onMouseDown); + selectionPane.current.addEventListener('mousemove', onMouseMove); + selectionPane.current.addEventListener('mouseup', onMouseUp); + return function () { + selectionPane.current.removeEventListener('mousedown', onMouseDown); + selectionPane.current.removeEventListener('mousemove', onMouseMove); + selectionPane.current.removeEventListener('mouseup', onMouseUp); + }; + }, []); + return (React.createElement("div", { className: "react-flow__selectionpane", ref: selectionPane }, rect.draw && (React.createElement("div", { className: "react-flow__selection", style: { + width: rect.width, + height: rect.height, + transform: "translate(" + rect.x + "px, " + rect.y + "px)" + } })))); }); -function getHandlePosition(position, node) { - var handle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; +/** + * 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. + */ - if (!handle) { - switch (position) { - case 'top': - return { - x: node.__rg.width / 2, - y: 0 - }; +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; - case 'right': - return { - x: node.__rg.width, - y: node.__rg.height / 2 - }; +var ReactPropTypesSecret_1 = ReactPropTypesSecret; - case 'bottom': - return { - x: node.__rg.width / 2, - y: node.__rg.height - }; +function emptyFunction() {} +function emptyFunctionWithReset() {} +emptyFunctionWithReset.resetWarningCache = emptyFunction; - case 'left': - return { - x: 0, - y: node.__rg.height / 2 - }; +var factoryWithThrowingShims = function() { + function shim(props, propName, componentName, location, propFullName, secret) { + if (secret === ReactPropTypesSecret_1) { + // It is still safe when called from React. + return; } - } - - switch (position) { - case 'top': - return { - x: handle.x + handle.width / 2, - y: handle.y - }; - - case 'right': - return { - x: handle.x + handle.width, - y: handle.y + handle.height / 2 - }; - - case 'bottom': - return { - x: handle.x + handle.width / 2, - y: handle.y + handle.height - }; - - case '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; - }); - } + 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; + } shim.isRequired = shim; + function getShim() { + return shim; + } // Important! + // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. + var ReactPropTypes = { + array: shim, + bool: shim, + func: shim, + number: shim, + object: shim, + string: shim, + symbol: shim, - return handle; -} + any: shim, + arrayOf: getShim, + element: shim, + elementType: shim, + instanceOf: getShim, + node: shim, + objectOf: getShim, + oneOf: getShim, + oneOfType: getShim, + shape: getShim, + exact: getShim, -function getEdgePositions(_ref) { - var sourceNode = _ref.sourceNode, - sourceHandle = _ref.sourceHandle, - sourcePosition = _ref.sourcePosition, - targetNode = _ref.targetNode, - targetHandle = _ref.targetHandle, - targetPosition = _ref.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 + checkPropTypes: emptyFunctionWithReset, + resetWarningCache: emptyFunction }; -} - -function renderEdge(e, props, state) { - var edgeType = e.type || 'default'; - var hasSourceHandleId = e.source.includes('__'); - var hasTargetHandleId = e.target.includes('__'); - var sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source; - var targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target; - var sourceHandleId = hasSourceHandleId ? e.source.split('__')[1] : null; - var targetHandleId = hasTargetHandleId ? e.target.split('__')[1] : null; - var sourceNode = state.nodes.find(function (n) { - return n.id === sourceId; - }); - var targetNode = state.nodes.find(function (n) { - return n.id === targetId; - }); - - if (!sourceNode) { - throw new Error("couldn't create edge for source id: ".concat(sourceId)); - } - - if (!targetNode) { - throw new Error("couldn't create edge for target id: ".concat(targetId)); - } - - 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 : 'bottom'; - var targetPosition = targetHandle ? targetHandle.position : 'top'; - - var _getEdgePositions = getEdgePositions({ - sourceNode: sourceNode, - sourceHandle: sourceHandle, - sourcePosition: sourcePosition, - targetNode: targetNode, - targetHandle: targetHandle, - targetPosition: targetPosition - }), - sourceX = _getEdgePositions.sourceX, - sourceY = _getEdgePositions.sourceY, - targetX = _getEdgePositions.targetX, - targetY = _getEdgePositions.targetY; - - var selected = state.selectedElements.filter(isEdge).find(function (elm) { - return elm.source === sourceId && elm.target === targetId; - }); - return React.createElement(EdgeComponent, { - key: e.id, - id: e.id, - type: e.type, - onClick: props.onElementClick, - selected: selected, - animated: e.animated, - style: e.style, - source: sourceId, - target: targetId, - sourceHandleId: sourceHandleId, - targetHandleId: targetHandleId, - sourceX: sourceX, - sourceY: sourceY, - targetX: targetX, - targetY: targetY, - sourcePosition: sourcePosition, - targetPosition: targetPosition - }); -} -var EdgeRenderer = memo(function (props) { - var state = useStoreState(function (s) { - return { - nodes: s.nodes, - edges: s.edges, - transform: s.transform, - selectedElements: s.selectedElements, - connectionSourceId: s.connectionSourceId, - position: s.connectionPosition - }; - }); - var width = props.width, - height = props.height, - connectionLineStyle = props.connectionLineStyle, - connectionLineType = props.connectionLineType; - - if (!width) { - return null; - } - - var transform = state.transform, - edges = state.edges, - nodes = state.nodes, - connectionSourceId = state.connectionSourceId, - position = state.position; - var transformStyle = "translate(".concat(transform[0], ",").concat(transform[1], ") scale(").concat(transform[2], ")"); - return React.createElement("svg", { - width: width, - height: height, - className: "react-flow__edges" - }, React.createElement("g", { - transform: transformStyle - }, edges.map(function (e) { - return renderEdge(e, props, state); - }), connectionSourceId && React.createElement(ConnectionLine, { - nodes: nodes, - connectionSourceId: connectionSourceId, - connectionPositionX: position.x, - connectionPositionY: position.y, - transform: transform, - connectionLineStyle: connectionLineStyle, - connectionLineType: connectionLineType - }))); -}); -EdgeRenderer.displayName = 'EdgeRenderer'; - -var baseStyles = { - position: 'absolute', - top: 0, - left: 0 -}; - -var createGridLines = function createGridLines(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".concat(i * gap + xOffset, " 0 V").concat(height); - }); - var yValues = Array.from({ - length: lineCountY - }, function (_, i) { - return "M0 ".concat(i * gap + yOffset, " H").concat(width); - }); - return [].concat(_toConsumableArray(xValues), _toConsumableArray(yValues)).join(' '); -}; - -var createGridDots = function createGridDots(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".concat(x, " ").concat(y - size, " l").concat(size, " ").concat(size, " l").concat(-size, " ").concat(size, " l").concat(-size, " ").concat(-size, "z"); - }).join(' '); - }); - return values.join(' '); -}; - -var Grid = memo(function (_ref) { - var gap = _ref.gap, - color = _ref.color, - size = _ref.size, - style = _ref.style, - className = _ref.className, - backgroundType = _ref.backgroundType; - - var _useStoreState = useStoreState(function (s) { - return s; - }), - width = _useStoreState.width, - height = _useStoreState.height, - _useStoreState$transf = _slicedToArray(_useStoreState.transform, 3), - x = _useStoreState$transf[0], - y = _useStoreState$transf[1], - scale = _useStoreState$transf[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.createElement("svg", { - width: width, - height: height, - style: _objectSpread2$1({}, baseStyles, {}, style), - className: gridClasses - }, React.createElement("path", { - fill: fill, - stroke: stroke, - strokeWidth: size, - d: path - })); -}); -Grid.displayName = 'Grid'; -Grid.propTypes = { - gap: propTypes.number, - color: propTypes.string, - size: propTypes.number, - style: propTypes.object, - className: propTypes.string, - backgroundType: propTypes.oneOf(['lines', 'dots']) -}; -Grid.defaultProps = { - gap: 24, - color: '#aaa', - size: .5, - style: {}, - className: null, - backgroundType: 'dots' -}; + ReactPropTypes.PropTypes = ReactPropTypes; -var bgComponents = { - lines: Grid, - dots: Grid -}; -var BackgroundRenderer = memo(function (_ref) { - var backgroundType = _ref.backgroundType, - rest = _objectWithoutProperties(_ref, ["backgroundType"]); - - var BackgroundComponent = bgComponents[backgroundType]; - return React.createElement(BackgroundComponent, _extends$1({ - backgroundType: backgroundType - }, rest)); -}); -BackgroundRenderer.displayName = 'BackgroundRenderer'; -BackgroundRenderer.propTypes = { - backgroundType: propTypes.oneOf(['lines', 'dots']) -}; -BackgroundRenderer.defaultProps = { - backgroundType: 'dots' + return ReactPropTypes; }; -var initialRect = { - startX: 0, - startY: 0, - x: 0, - y: 0, - width: 0, - height: 0, - draw: false -}; +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. + */ -function getMousePosition(evt) { - var containerBounds = document.querySelector('.react-flow').getBoundingClientRect(); - return { - x: evt.clientX - containerBounds.left, - y: evt.clientY - containerBounds.top - }; +{ + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = factoryWithThrowingShims(); } - -var UserSelection = memo(function () { - var selectionPane = useRef(null); - - var _useState = useState(initialRect), - _useState2 = _slicedToArray(_useState, 2), - rect = _useState2[0], - setRect = _useState2[1]; - - var setSelection = useStoreActions(function (a) { - return a.setSelection; - }); - var updateSelection = useStoreActions(function (a) { - return a.updateSelection; - }); - var setNodesSelection = useStoreActions(function (a) { - return a.setNodesSelection; - }); - useEffect(function () { - function onMouseDown(evt) { - var mousePos = getMousePosition(evt); - setRect(function (currentRect) { - return _objectSpread2$1({}, currentRect, { - startX: mousePos.x, - startY: mousePos.y, - x: mousePos.x, - y: mousePos.y, - draw: true - }); - }); - setSelection(true); - } - - function onMouseMove(evt) { - setRect(function (currentRect) { - if (!currentRect.draw) { - return currentRect; - } - - var mousePos = getMousePosition(evt); - var negativeX = mousePos.x < currentRect.startX; - var negativeY = mousePos.y < currentRect.startY; - - var nextRect = _objectSpread2$1({}, currentRect, { - x: negativeX ? mousePos.x : currentRect.x, - y: negativeY ? mousePos.y : currentRect.y, - width: negativeX ? currentRect.startX - mousePos.x : mousePos.x - currentRect.startX, - height: negativeY ? currentRect.startY - mousePos.y : mousePos.y - currentRect.startY - }); - - updateSelection(nextRect); - return nextRect; - }); - } - - function onMouseUp() { - setRect(function (currentRect) { - setNodesSelection({ - isActive: true, - selection: currentRect - }); - setSelection(false); - return _objectSpread2$1({}, currentRect, { - draw: false - }); - }); - } - - selectionPane.current.addEventListener('mousedown', onMouseDown); - selectionPane.current.addEventListener('mousemove', onMouseMove); - selectionPane.current.addEventListener('mouseup', onMouseUp); - return function () { - selectionPane.current.removeEventListener('mousedown', onMouseDown); - selectionPane.current.removeEventListener('mousemove', onMouseMove); - selectionPane.current.removeEventListener('mouseup', onMouseUp); - }; - }, []); - return React.createElement("div", { - className: "react-flow__selectionpane", - ref: selectionPane - }, (rect.draw || rect.fixed) && React.createElement("div", { - className: "react-flow__selection", - style: { - width: rect.width, - height: rect.height, - transform: "translate(".concat(rect.x, "px, ").concat(rect.y, "px)") - } - })); }); var shims = createCommonjsModule(function (module, exports) { @@ -8392,984 +7947,871 @@ var DraggableCore = DraggableCore_1.default; reactDraggable.default = default_1; reactDraggable.DraggableCore = DraggableCore; -function getStartPositions(elements) { - return elements.filter(isNode).reduce(function (res, node) { - var startPosition = { - x: node.__rg.position.x || node.position.x, - y: node.__rg.position.y || node.position.x - }; - res[node.id] = startPosition; - return res; - }, {}); -} - -var NodesSelection = memo(function () { - var _useState = useState({ - x: 0, - y: 0 - }), - _useState2 = _slicedToArray(_useState, 2), - offset = _useState2[0], - setOffset = _useState2[1]; - - var _useState3 = useState({}), - _useState4 = _slicedToArray(_useState3, 2), - startPositions = _useState4[0], - setStartPositions = _useState4[1]; - - var state = useStoreState(function (s) { - return { - transform: s.transform, - selectedNodesBbox: s.selectedNodesBbox, - selectedElements: s.selectedElements - }; - }); - var updateNodePos = useStoreActions(function (a) { - return a.updateNodePos; - }); - - var _state$transform = _slicedToArray(state.transform, 3), - x = _state$transform[0], - y = _state$transform[1], - k = _state$transform[2]; - - var position = state.selectedNodesBbox; - - var onStart = function onStart(evt) { - var scaledClient = { - x: evt.clientX * (1 / k), - y: evt.clientY * (1 / k) - }; - var offsetX = scaledClient.x - position.x - x; - var offsetY = scaledClient.y - position.y - y; - var startPositions = getStartPositions(state.selectedElements); - setOffset({ - x: offsetX, - y: offsetY - }); - setStartPositions(startPositions); - }; +function getStartPositions(elements) { + return elements + .filter(isNode) + .reduce(function (res, node) { + var startPosition = { + x: node.__rg.position.x || node.position.x, + y: node.__rg.position.y || node.position.x + }; + res[node.id] = startPosition; + return res; + }, {}); +} +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 + }); }); + var updateNodePos = useStoreActions$1(function (a) { return a.updateNodePos; }); + var _c = state.transform, x = _c[0], y = _c[1], k = _c[2]; + var position = state.selectedNodesBbox; + var onStart = function (evt) { + var scaledClient = { + x: evt.clientX * (1 / k), + y: evt.clientY * (1 / k) + }; + var offsetX = scaledClient.x - position.x - x; + var offsetY = scaledClient.y - position.y - y; + var startPositions = getStartPositions(state.selectedElements); + setOffset({ x: offsetX, y: offsetY }); + setStartPositions(startPositions); + }; + var onDrag = function (evt) { + var scaledClient = { + x: evt.clientX * (1 / k), + y: evt.clientY * (1 / k) + }; + state.selectedElements + .filter(isNode) + .forEach(function (node) { + updateNodePos({ id: node.id, pos: { + x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - x, + y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - y + } }); + }); + }; + return (React.createElement("div", { className: "react-flow__nodesselection", style: { + transform: "translate(" + x + "px," + y + "px) scale(" + k + ")" + } }, + React.createElement(reactDraggable, { scale: k, onStart: function (evt) { return onStart(evt); }, onDrag: function (evt) { return onDrag(evt); } }, + React.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 onDrag = function onDrag(evt) { - var scaledClient = { - x: evt.clientX * (1 / k), - y: evt.clientY * (1 / k) - }; - state.selectedElements.filter(isNode).forEach(function (node) { - updateNodePos({ - id: node.id, - pos: { - x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - x, - y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - y - } - }); - }); - }; +var GridType; +(function (GridType) { + GridType["Lines"] = "lines"; + GridType["Dots"] = "dots"; +})(GridType || (GridType = {})); + +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 ? null : _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.createElement("svg", { width: width, height: height, style: __assign(__assign({}, baseStyles), style), className: gridClasses }, + React.createElement("path", { fill: fill, stroke: stroke, strokeWidth: size, d: path }))); +}); +Grid.displayName = 'Grid'; - return React.createElement("div", { - className: "react-flow__nodesselection", - style: { - transform: "translate(".concat(x, "px,").concat(y, "px) scale(").concat(k, ")") - } - }, React.createElement(reactDraggable, { - scale: k, - onStart: onStart, - onDrag: onDrag - }, React.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 isInputDOMNode = function (e) { + var target = e.target; + return e && target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(target.nodeName); +}; +var getDimensions = function (node) { return ({ + width: node.offsetWidth, + height: node.offsetHeight +}); }; + +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; }); -function useKeyPress(keyCode) { - var _useState = useState(false), - _useState2 = _slicedToArray(_useState, 2), - keyPressed = _useState2[0], - setKeyPressed = _useState2[1]; - - function downHandler(evt) { - if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) { - setKeyPressed(true); - } - } +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 () { + 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 false; + } + updateTransform(event.transform); + onMove(); + }); + if (state.d3Selection) { + // 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 upHandler = function upHandler(evt) { - if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) { - setKeyPressed(false); - } - }; +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]); + return null; +}); - useEffect(function () { - window.addEventListener('keydown', downHandler); - window.addEventListener('keyup', upHandler); - return function () { - window.removeEventListener('keydown', downHandler); - window.removeEventListener('keyup', upHandler); - }; - }, []); - return keyPressed; -} +var useElementUpdater = function (elements) { + var state = useStoreState$1(function (s) { return ({ + nodes: s.nodes, + edges: s.edges, + transform: s.transform + }); }); + 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); }); + 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); + }); + var nodesChanged = !fastDeepEqual(state.nodes, nextNodes); + var edgesChanged = !fastDeepEqual(state.edges, edges); + if (nodesChanged) { + setNodes(nextNodes); + } + if (edgesChanged) { + setEdges(edges); + } + }); + return null; +}; -var d3ZoomInstance = zoom().scaleExtent([0.5, 2]).filter(function () { - return !event.button; -}); -function useD3Zoom(zoomPane, onMove, shiftPressed) { - var state = useStoreState(function (s) { - return { - transform: s.transform, - d3Selection: s.d3Selection, - d3Zoom: s.d3Zoom, - edges: s.edged, - d3Initialised: s.d3Initialised, - nodesSelectionActive: s.nodesSelectionActive - }; - }); - var initD3 = useStoreActions(function (actions) { - return actions.initD3; - }); - var updateTransform = useStoreActions(function (actions) { - return actions.updateTransform; - }); - useEffect(function () { - 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 false; - } +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; + 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 selectionKeyPressed = useKeyPress(selectionKeyCode); + var onZoomPaneClick = function () { return setNodesSelection({ isActive: false }); }; + var updateDimensions = function () { + 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]); + useGlobalKeyHandler({ onElementsRemove: onElementsRemove, deleteKeyCode: deleteKeyCode }); + useElementUpdater(elements); + return (React.createElement("div", { className: "react-flow__renderer", ref: rendererNode }, + showBackground && (React.createElement(Grid, { gap: backgroundGap, color: backgroundColor, backgroundType: backgroundType })), + React.createElement(NodeRenderer, { nodeTypes: nodeTypes, onElementClick: onElementClick, onNodeDragStop: onNodeDragStop }), + React.createElement(EdgeRenderer, { width: state.width, height: state.height, edgeTypes: edgeTypes, onElementClick: onElementClick, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle }), + selectionKeyPressed && React.createElement(UserSelection, null), + state.nodesSelectionActive && React.createElement(NodesSelection, null), + React.createElement("div", { className: "react-flow__zoompane", onClick: onZoomPaneClick, ref: zoomPane }))); +}); +GraphView.displayName = 'GraphView'; - updateTransform(event.transform); - onMove(); - }); +function onMouseDown(evt, nodeId, setSourceId, setPosition, onConnect, isTarget, isValidConnection) { + var reactFlowNode = document.querySelector('.react-flow'); + if (!reactFlowNode) { + return null; + } + var containerBounds = reactFlowNode.getBoundingClientRect(); + var recentHoveredHandle = null; + setPosition({ + x: evt.clientX - containerBounds.left, + y: evt.clientY - containerBounds.top, + }); + setSourceId(nodeId); + function resetRecentHandle() { + if (!recentHoveredHandle) { + return false; + } + 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) { + 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', className, position, { source: !isTarget, target: isTarget }); + var nodeIdWithHandleId = id ? nodeId + "__" + id : nodeId; + return (React.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'; - if (state.d3Selection) { - // 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); - } - } +var NodeIdContext = createContext(null); +var Provider = NodeIdContext.Provider; +var Consumer = NodeIdContext.Consumer; - return function () { - d3ZoomInstance.on('zoom', null); - }; - }, [shiftPressed]); -} +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 ? '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.createElement(BaseHandle, __assign({ nodeId: nodeId, setPosition: setPosition, setSourceId: setSourceId, onConnect: onConnectExtended, type: type, position: position, isValidConnection: isValidConnection }, rest))); +}); +Handle.displayName = 'Handle'; -var useGlobalKeyHandler = (function (_ref) { - var deleteKeyCode = _ref.deleteKeyCode, - onElementsRemove = _ref.onElementsRemove; - var state = useStoreState(function (s) { - return { - selectedElements: s.selectedElements, - edges: s.edges - }; - }); - var setNodesSelection = useStoreActions(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 connectedEdges = getConnectedEdges(state.selectedElements, state.edges); - elementsToRemove = [].concat(_toConsumableArray(state.selectedElements), _toConsumableArray(connectedEdges)); - } +var nodeStyles = { + background: '#ff6060', + padding: 10, + borderRadius: 5, + width: 150 +}; +var DefaultNode = (function (_a) { + var data = _a.data, style = _a.style; + return (React.createElement("div", { style: __assign(__assign({}, nodeStyles), style) }, + React.createElement(Handle, { type: "target", position: "top" }), + data.label, + React.createElement(Handle, { type: "source", position: "bottom" }))); +}); - onElementsRemove(elementsToRemove); - setNodesSelection({ - isActive: false - }); - } - }, [deleteKeyPressed]); - return null; +var nodeStyles$1 = { + background: '#9999ff', + padding: 10, + borderRadius: 5, + width: 150 +}; +var InputNode = (function (_a) { + var data = _a.data, style = _a.style; + return (React.createElement("div", { style: __assign(__assign({}, nodeStyles$1), style) }, + data.label, + React.createElement(Handle, { type: "source", position: "bottom" }))); }); -var useElementUpdater = function useElementUpdater(_ref) { - var elements = _ref.elements; - var state = useStoreState(function (s) { - return { - nodes: s.nodes, - edges: s.edges, - transform: s.transform - }; - }); - var setNodes = useStoreActions(function (a) { - return a.setNodes; - }); - var setEdges = useStoreActions(function (a) { - return a.setEdges; - }); - useEffect(function () { - var nodes = elements.filter(isNode); - var edges = elements.filter(isEdge).map(parseElement); - var nextNodes = nodes.map(function (propNode) { - var existingNode = state.nodes.find(function (n) { - return n.id === propNode.id; - }); +var nodeStyles$2 = { + background: '#55dd99', + padding: 10, + borderRadius: 5, + width: 150 +}; +var OutputNode = (function (_a) { + var data = _a.data, style = _a.style; + return (React.createElement("div", { style: __assign(__assign({}, nodeStyles$2), style) }, + React.createElement(Handle, { type: "target", position: "top" }), + data.label)); +}); - if (existingNode) { - var data = !fastDeepEqual(existingNode.data, propNode.data) ? _objectSpread2$1({}, existingNode.data, {}, propNode.data) : existingNode.data; - return _objectSpread2$1({}, existingNode, { - data: data +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, }); - } - - return parseElement(propNode, state.transform); - }); - var nodesChanged = !fastDeepEqual(state.nodes, nextNodes); - var edgesChanged = !fastDeepEqual(state.edges, edges); - - if (nodesChanged) { - setNodes(nextNodes); } - - if (edgesChanged) { - setEdges(edges); + 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'), + }); } - }); - return null; }; +exports.ContentRect = ContentRect; -var GraphView = memo(function (_ref) { - var nodeTypes = _ref.nodeTypes, - edgeTypes = _ref.edgeTypes, - onMove = _ref.onMove, - onLoad = _ref.onLoad, - onElementClick = _ref.onElementClick, - onNodeDragStop = _ref.onNodeDragStop, - connectionLineType = _ref.connectionLineType, - connectionLineStyle = _ref.connectionLineStyle, - selectionKeyCode = _ref.selectionKeyCode, - onElementsRemove = _ref.onElementsRemove, - deleteKeyCode = _ref.deleteKeyCode, - elements = _ref.elements, - showBackground = _ref.showBackground, - backgroundGap = _ref.backgroundGap, - backgroundColor = _ref.backgroundColor, - backgroundType = _ref.backgroundType, - onConnect = _ref.onConnect; - var zoomPane = useRef(); - var rendererNode = useRef(); - var state = useStoreState(function (s) { - return { - width: s.width, - height: s.height, - nodes: s.nodes, - edges: s.edges, - d3Initialised: s.d3Initialised, - nodesSelectionActive: s.nodesSelectionActive - }; - }); - var updateSize = useStoreActions(function (actions) { - return actions.updateSize; - }); - var setNodesSelection = useStoreActions(function (actions) { - return actions.setNodesSelection; - }); - var setOnConnect = useStoreActions(function (a) { - return a.setOnConnect; - }); - var selectionKeyPressed = useKeyPress(selectionKeyCode); +}); - var onZoomPaneClick = function onZoomPaneClick() { - return setNodesSelection({ - isActive: false - }); - }; +unwrapExports(ContentRect_1); +var ContentRect_2 = ContentRect_1.ContentRect; - var updateDimensions = function updateDimensions() { - var size = getDimensions(rendererNode.current); - updateSize(size); - }; +var ResizeObservation_1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); - 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 - }); +var ResizeObservation = /** @class */ (function () { + function ResizeObservation(target) { + this.target = target; + this.$$broadcastWidth = this.$$broadcastHeight = 0; } - }, [state.d3Initialised]); - useGlobalKeyHandler({ - onElementsRemove: onElementsRemove, - deleteKeyCode: deleteKeyCode - }); - useElementUpdater({ - elements: elements - }); - return React.createElement("div", { - className: "react-flow__renderer", - ref: rendererNode - }, showBackground && React.createElement(BackgroundRenderer, { - gap: backgroundGap, - color: backgroundColor, - backgroundType: backgroundType - }), React.createElement(NodeRenderer, { - nodeTypes: nodeTypes, - onElementClick: onElementClick, - onNodeDragStop: onNodeDragStop - }), React.createElement(EdgeRenderer, { - width: state.width, - height: state.height, - edgeTypes: edgeTypes, - onElementClick: onElementClick, - connectionLineType: connectionLineType, - connectionLineStyle: connectionLineStyle - }), selectionKeyPressed && React.createElement(UserSelection, null), state.nodesSelectionActive && React.createElement(NodesSelection, null), React.createElement("div", { - className: "react-flow__zoompane", - onClick: onZoomPaneClick, - ref: zoomPane - })); + 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; + }); -GraphView.displayName = 'GraphView'; -function _onMouseDown(evt, _ref) { - var nodeId = _ref.nodeId, - setSourceId = _ref.setSourceId, - setPosition = _ref.setPosition, - onConnect = _ref.onConnect, - isTarget = _ref.isTarget, - isValidConnection = _ref.isValidConnection; - var containerBounds = document.querySelector('.react-flow').getBoundingClientRect(); - var recentHoveredHandle = null; - setPosition({ - x: evt.clientX - containerBounds.x, - y: evt.clientY - containerBounds.y - }); - setSourceId(nodeId); +unwrapExports(ResizeObservation_1); +var ResizeObservation_2 = ResizeObservation_1.ResizeObservation; - function resetRecentHandle() { - if (recentHoveredHandle) { - recentHoveredHandle.classList.remove('valid'); - recentHoveredHandle.classList.remove('connecting'); +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); } - } // checks if element below mouse is a handle and returns connection in form of an object { source: 123, target: 312 } + return ResizeObserverEntry; +}()); +exports.ResizeObserverEntry = ResizeObserverEntry; +}); - function checkElementBelowIsValid(evt) { - var elementBelow = document.elementFromPoint(evt.clientX, evt.clientY); - var result = { - elementBelow: elementBelow, - isValid: false, - connection: null, - isHoveringHandle: false +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(); }; - - if (elementBelow && (elementBelow.classList.contains('target') || elementBelow.classList.contains('source'))) { - var connection = 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; + 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."; } - - return result; - } - - function onMouseMove(evt) { - setPosition({ - x: evt.clientX - containerBounds.x, - y: evt.clientY - containerBounds.y - }); - - var _checkElementBelowIsV = checkElementBelowIsValid(evt), - connection = _checkElementBelowIsV.connection, - elementBelow = _checkElementBelowIsV.elementBelow, - isValid = _checkElementBelowIsV.isValid, - isHoveringHandle = _checkElementBelowIsV.isHoveringHandle; - - if (!isHoveringHandle) { - return resetRecentHandle(); + if (typeof (callback) !== 'function') { + return "Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function."; } - - var isOwnHandle = connection.source === connection.target; - - if (!isOwnHandle) { - recentHoveredHandle = elementBelow; - elementBelow.classList.add('connecting'); - elementBelow.classList.toggle('valid', isValid); +} +function targetGuard(functionName, target) { + if (typeof (target) === 'undefined') { + return "Failed to execute '" + functionName + "' on 'ResizeObserver': 1 argument required, but only 0 present."; } - } - - function onMouseUp(evt) { - var _checkElementBelowIsV2 = checkElementBelowIsValid(evt), - connection = _checkElementBelowIsV2.connection, - isValid = _checkElementBelowIsV2.isValid; - - if (isValid) { - onConnect(connection); + if (!(target instanceof window.Element)) { + return "Failed to execute '" + functionName + "' on 'ResizeObserver': parameter 1 is not of type 'Element'."; } - - resetRecentHandle(); - setSourceId(null); - document.removeEventListener('mousemove', onMouseMove); - document.removeEventListener('mouseup', onMouseUp); - } - - document.addEventListener('mousemove', onMouseMove); - document.addEventListener('mouseup', onMouseUp); } - -var BaseHandle = memo(function (_ref2) { - var type = _ref2.type, - nodeId = _ref2.nodeId, - onConnect = _ref2.onConnect, - position = _ref2.position, - setSourceId = _ref2.setSourceId, - setPosition = _ref2.setPosition, - className = _ref2.className, - _ref2$id = _ref2.id, - id = _ref2$id === void 0 ? false : _ref2$id, - isValidConnection = _ref2.isValidConnection, - rest = _objectWithoutProperties(_ref2, ["type", "nodeId", "onConnect", "position", "setSourceId", "setPosition", "className", "id", "isValidConnection"]); - - var isTarget = type === 'target'; - var handleClasses = classnames('react-flow__handle', className, position, { - source: !isTarget, - target: isTarget - }); - var nodeIdWithHandleId = id ? "".concat(nodeId, "__").concat(id) : nodeId; - return React.createElement("div", _extends$1({ - "data-nodeid": nodeIdWithHandleId, - "data-handlepos": position, - className: handleClasses, - onMouseDown: function onMouseDown(evt) { - return _onMouseDown(evt, { - nodeId: nodeIdWithHandleId, - setSourceId: setSourceId, - setPosition: setPosition, - onConnect: onConnect, - isTarget: isTarget, - isValidConnection: isValidConnection - }); +function findTargetIndex(collection, target) { + for (var index = 0; index < collection.length; index += 1) { + if (collection[index].target === target) { + return index; + } } - }, rest)); -}); -BaseHandle.displayName = 'BaseHandle'; -BaseHandle.whyDidYouRender = false; - -var NodeIdContext = createContext(null); -var Provider = NodeIdContext.Provider; -var Consumer = NodeIdContext.Consumer; -Provider.displayName = 'NodeIdProvider'; - -var Handle = memo(function (_ref) { - var onConnect = _ref.onConnect, - rest = _objectWithoutProperties(_ref, ["onConnect"]); - - var nodeId = useContext(NodeIdContext); - - var _useStoreActions = useStoreActions(function (a) { - return { - setPosition: a.setConnectionPosition, - setSourceId: a.setConnectionSourceId - }; - }), - setPosition = _useStoreActions.setPosition, - setSourceId = _useStoreActions.setSourceId; - - var onConnectAction = useStoreState(function (s) { - return s.onConnect; - }); - - var onConnectExtended = function onConnectExtended(params) { - onConnectAction(params); - onConnect(params); - }; - - return React.createElement(BaseHandle, _extends$1({ - nodeId: nodeId, - setPosition: setPosition, - setSourceId: setSourceId, - onConnect: onConnectExtended - }, rest)); -}); -Handle.displayName = 'Handle'; -Handle.propTypes = { - type: propTypes.oneOf(['source', 'target']), - position: propTypes.oneOf(['top', 'right', 'bottom', 'left']), - onConnect: propTypes.func, - isValidConnection: propTypes.func + 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); + } + } + }); + }); }; -Handle.defaultProps = { - type: 'source', - position: 'top', - onConnect: function onConnect() {}, - isValidConnection: function isValidConnection() { - return true; - } +var hasActiveObservations = function () { + return resizeObservers.some(function (ro) { return !!ro.$$activeTargets.length; }); }; - -var nodeStyles = { - background: '#ff6060', - padding: 10, - borderRadius: 5, - width: 150 +var hasSkippedObservations = function () { + return resizeObservers.some(function (ro) { return !!ro.$$skippedTargets.length; }); }; -var DefaultNode = (function (_ref) { - var data = _ref.data, - style = _ref.style; - return React.createElement("div", { - style: _objectSpread2$1({}, nodeStyles, {}, style) - }, React.createElement(Handle, { - type: "target", - position: "top" - }), data.label, React.createElement(Handle, { - type: "source", - position: "bottom" - })); -}); - -var nodeStyles$1 = { - background: '#9999ff', - padding: 10, - borderRadius: 5, - width: 150 +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 InputNode = (function (_ref) { - var data = _ref.data, - style = _ref.style; - return React.createElement("div", { - style: _objectSpread2$1({}, nodeStyles$1, {}, style) - }, data.label, React.createElement(Handle, { - type: "source", - position: "bottom" - })); -}); - -var nodeStyles$2 = { - background: '#55dd99', - padding: 10, - borderRadius: 5, - width: 150 +var deliverResizeLoopErrorNotification = function () { + var errorEvent = new window.ErrorEvent('ResizeLoopError', { + message: 'ResizeObserver loop completed with undelivered notifications.', + }); + window.dispatchEvent(errorEvent); }; -var OutputNode = (function (_ref) { - var data = _ref.data, - style = _ref.style; - return React.createElement("div", { - style: _objectSpread2$1({}, nodeStyles$2, {}, style) - }, React.createElement(Handle, { - type: "target", - position: "top" - }), data.label); -}); - -var isHandle = function isHandle(e) { - return e.target.className && e.target.className.includes && (e.target.className.includes('source') || e.target.className.includes('target')); +var calculateDepthForNode = function (target) { + var depth = 0; + while (target.parentNode) { + target = target.parentNode; + depth += 1; + } + return depth; }; - -var hasResizeObserver = !!window.ResizeObserver; - -var getHandleBounds = function getHandleBounds(sel, nodeElement, parentBounds, k) { - var handles = nodeElement.querySelectorAll(sel); - - if (!handles || !handles.length) { - return null; - } - - return [].map.call(handles, 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.split('__'); - var handleId = null; - - if (nodeIdSplitted) { - handleId = nodeIdSplitted.length ? nodeIdSplitted[1] : nodeIdSplitted; +var notificationIteration = function () { + var depth = 0; + gatherActiveObservationsAtDepth(depth); + while (hasActiveObservations()) { + depth = broadcastActiveObservations(); + gatherActiveObservationsAtDepth(depth); + } + if (hasSkippedObservations()) { + deliverResizeLoopErrorNotification(); } - - return _objectSpread2$1({ - id: handleId, - position: handlePosition, - x: (bounds.x - parentBounds.x) * (1 / k), - y: (bounds.y - parentBounds.y) * (1 / k) - }, dimensions); - }); }; - -var _onStart = function onStart(evt, _ref) { - var setOffset = _ref.setOffset, - onClick = _ref.onClick, - id = _ref.id, - type = _ref.type, - data = _ref.data, - position = _ref.position, - transform = _ref.transform; - - if (inInputDOMNode(evt) || isHandle(evt)) { - return false; - } - - var scaledClient = { - x: evt.clientX * (1 / [transform[2]]), - y: evt.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 animationFrameCancelToken; +var startLoop = function () { + if (animationFrameCancelToken) + return; + runLoop(); }; - -var _onDrag = function onDrag(evt, _ref2) { - var setDragging = _ref2.setDragging, - id = _ref2.id, - offset = _ref2.offset, - transform = _ref2.transform; - var scaledClient = { - x: evt.clientX * (1 / transform[2]), - y: evt.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 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 _onStop = function onStop(_ref3) { - var onNodeDragStop = _ref3.onNodeDragStop, - setDragging = _ref3.setDragging, - isDragging = _ref3.isDragging, - id = _ref3.id, - type = _ref3.type, - position = _ref3.position, - data = _ref3.data; - - if (!isDragging) { - return false; - } - - setDragging(false); - onNodeDragStop({ - id: id, - type: type, - position: position, - data: data - }); +var install = function () { + return window.ResizeObserver = ResizeObserver; }; +exports.install = install; -var wrapNode = (function (NodeComponent) { - var NodeWrapper = memo(function (props) { - var nodeElement = useRef(null); - - var _useState = useState({ - x: 0, - y: 0 - }), - _useState2 = _slicedToArray(_useState, 2), - offset = _useState2[0], - setOffset = _useState2[1]; - - var _useState3 = useState(false), - _useState4 = _slicedToArray(_useState3, 2), - isDragging = _useState4[0], - setDragging = _useState4[1]; - - var id = props.id, - type = props.type, - data = props.data, - transform = props.transform, - xPos = props.xPos, - yPos = props.yPos, - selected = props.selected, - onClick = props.onClick, - onNodeDragStop = props.onNodeDragStop, - style = props.style; - var position = { - x: xPos, - y: yPos - }; - var nodeClasses = classnames('react-flow__node', { - selected: selected - }); - var nodeStyle = { - zIndex: selected ? 10 : 3, - transform: "translate(".concat(xPos, "px,").concat(yPos, "px)") - }; - - var updateNode = function updateNode() { - var storeState = store.getState(); - var bounds = nodeElement.current.getBoundingClientRect(); - var dimensions = getDimensions(nodeElement.current); - var handleBounds = { - source: getHandleBounds('.source', nodeElement.current, bounds, storeState.transform[2]), - target: getHandleBounds('.target', nodeElement.current, bounds, storeState.transform[2]) - }; - store.dispatch.updateNodeData(_objectSpread2$1({ - id: id - }, dimensions, { - handleBounds: handleBounds - })); - }; - - useEffect(function () { - updateNode(); - var resizeObserver = null; - - if (hasResizeObserver) { - resizeObserver = new ResizeObserver(function (entries) { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var entry = _step.value; - updateNode(); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - }); - resizeObserver.observe(nodeElement.current); - } - - return function () { - if (hasResizeObserver && resizeObserver) { - resizeObserver.unobserve(nodeElement.current); - } - }; - }, []); - return React.createElement(reactDraggable.DraggableCore, { - onStart: function onStart(evt) { - return _onStart(evt, { - onClick: onClick, - id: id, - type: type, - data: data, - setOffset: setOffset, - transform: transform, - position: position - }); - }, - onDrag: function onDrag(evt) { - return _onDrag(evt, { - setDragging: setDragging, - id: id, - offset: offset, - transform: transform - }); - }, - onStop: function onStop() { - return _onStop({ - onNodeDragStop: onNodeDragStop, - isDragging: isDragging, - setDragging: setDragging, - id: id, - type: type, - position: position, - data: data - }); - }, - scale: transform[2] - }, React.createElement("div", { - className: nodeClasses, - ref: nodeElement, - style: nodeStyle - }, React.createElement(Provider, { - value: id - }, React.createElement(NodeComponent, { - id: id, - data: data, - type: type, - style: style, - selected: selected - })))); - }); - NodeWrapper.displayName = 'NodeWrapper'; - NodeWrapper.whyDidYouRender = false; - return NodeWrapper; }); -function createNodeTypes(nodeTypes) { - var standardTypes = { - input: wrapNode(nodeTypes.input || InputNode), - "default": wrapNode(nodeTypes["default"] || DefaultNode), - output: wrapNode(nodeTypes.output || OutputNode) - }; - 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; - }, {}); - return _objectSpread2$1({}, standardTypes, {}, specialTypes); -} - -var BezierEdge = memo(function (_ref) { - var sourceX = _ref.sourceX, - sourceY = _ref.sourceY, - targetX = _ref.targetX, - targetY = _ref.targetY, - sourcePosition = _ref.sourcePosition, - targetPosition = _ref.targetPosition, - _ref$style = _ref.style, - style = _ref$style === void 0 ? {} : _ref$style; - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - var dAttr = "M".concat(sourceX, ",").concat(sourceY, " C").concat(sourceX, ",").concat(centerY, " ").concat(targetX, ",").concat(centerY, " ").concat(targetX, ",").concat(targetY); - - if (['left', 'right'].includes(sourcePosition) && ['left', 'right'].includes(targetPosition)) { - var xOffset = Math.abs(targetX - sourceX) / 2; - var centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset; - dAttr = "M".concat(sourceX, ",").concat(sourceY, " C").concat(centerX, ",").concat(sourceY, " ").concat(centerX, ",").concat(targetY, " ").concat(targetX, ",").concat(targetY); - } else if (['left', 'right'].includes(sourcePosition) || ['left', 'right'].includes(targetPosition)) { - dAttr = "M".concat(sourceX, ",").concat(sourceY, " C").concat(sourceX, ",").concat(targetY, " ").concat(sourceX, ",").concat(targetY, " ").concat(targetX, ",").concat(targetY); - } - - return React.createElement("path", _extends$1({}, style, { - d: dAttr - })); +unwrapExports(ResizeObserver_1); +var ResizeObserver_2 = ResizeObserver_1.ResizeObserver; +var ResizeObserver_3 = ResizeObserver_1.install; + +var isHandle = function (evt) { + var target = evt.target; + return (target.className && + target.className.includes && + (target.className.includes('source') || target.className.includes('target'))); +}; +var getHandleBounds = function (selector, nodeElement, parentBounds, k) { + var handles = nodeElement.querySelectorAll(selector); + if (!handles || !handles.length) { + return null; + } + return [].map.call(handles, 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.split('__'); + 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 onStart = function (evt, onClick, id, type, data, setOffset, transform, position) { + if (isInputDOMNode(evt) || isHandle(evt)) { + return false; + } + var scaledClient = { + x: evt.clientX * (1 / transform[2]), + y: evt.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 scaledClient = { + x: evt.clientX * (1 / transform[2]), + y: evt.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; + 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 false; + } + var storeState = store.getState(); + var bounds = nodeElement.current.getBoundingClientRect(); + var dimensions = getDimensions(nodeElement.current); + var handleBounds = { + source: getHandleBounds('.source', nodeElement.current, bounds, storeState.transform[2]), + target: getHandleBounds('.target', nodeElement.current, bounds, storeState.transform[2]) + }; + store.dispatch.updateNodeData(__assign(__assign({ id: id }, dimensions), { handleBounds: handleBounds })); + }; + 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 _ = entries_1[_i]; + updateNode(); + } + }); + resizeObserver_1.observe(nodeElement.current); + return function () { + if (resizeObserver_1 && nodeElement.current) { + resizeObserver_1.unobserve(nodeElement.current); + } + }; + } + }, [nodeElement.current]); + return (React.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] }, + React.createElement("div", { className: nodeClasses, ref: nodeElement, style: nodeStyle }, + React.createElement(Provider, { value: id }, + React.createElement(NodeComponent, { id: id, data: data, type: type, style: style, selected: selected }))))); + }); + NodeWrapper.displayName = 'NodeWrapper'; + return NodeWrapper; }); -var StraightEdge = memo(function (props) { - var sourceX = props.sourceX, - sourceY = props.sourceY, - targetX = props.targetX, - targetY = props.targetY, - _props$style = props.style, - style = _props$style === void 0 ? {} : _props$style; - return React.createElement("path", _extends$1({}, style, { - d: "M ".concat(sourceX, ",").concat(sourceY, "L ").concat(targetX, ",").concat(targetY) - })); +function createNodeTypes(nodeTypes) { + var standardTypes = { + input: wrapNode((nodeTypes.input || InputNode)), + default: wrapNode((nodeTypes.default || DefaultNode)), + output: wrapNode((nodeTypes.output || OutputNode)) + }; + 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; + }, {}); + 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 ? 'bottom' : _b, _c = _a.targetPosition, targetPosition = _c === void 0 ? '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; + if (['left', 'right'].includes(sourcePosition) && ['left', 'right'].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 (['left', 'right'].includes(sourcePosition) || ['left', 'right'].includes(targetPosition)) { + dAttr = "M" + sourceX + "," + sourceY + " C" + sourceX + "," + targetY + " " + sourceX + "," + targetY + " " + targetX + "," + targetY; + } + return (React.createElement("path", __assign({}, style, { d: dAttr }))); }); -var StepEdge = memo(function (props) { - var sourceX = props.sourceX, - sourceY = props.sourceY, - targetX = props.targetX, - targetY = props.targetY, - _props$style = props.style, - style = _props$style === void 0 ? {} : _props$style; - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - return React.createElement("path", _extends$1({}, style, { - d: "M ".concat(sourceX, ",").concat(sourceY, "L ").concat(sourceX, ",").concat(centerY, "L ").concat(targetX, ",").concat(centerY, "L ").concat(targetX, ",").concat(targetY) - })); +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.createElement("path", __assign({}, style, { d: "M " + sourceX + "," + sourceY + "L " + targetX + "," + targetY }))); }); -var wrapEdge = (function (EdgeComponent) { - var EdgeWrapper = memo(function (props) { - var id = props.id, - source = props.source, - target = props.target, - type = props.type, - animated = props.animated, - selected = props.selected, - onClick = props.onClick; - var edgeClasses = classnames('react-flow__edge', { - selected: selected, - animated: animated - }); - - var onEdgeClick = function onEdgeClick(evt) { - if (inInputDOMNode(evt)) { - return false; - } - - store.dispatch.setSelectedElements({ - id: id, - source: source, - target: target - }); - onClick({ - id: id, - source: source, - target: target, - type: type - }); - }; +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.createElement("path", __assign({}, style, { d: "M " + sourceX + "," + sourceY + "L " + sourceX + "," + centerY + "L " + targetX + "," + centerY + "L " + targetX + "," + targetY }))); +}); - return React.createElement("g", { - className: edgeClasses, - onClick: onEdgeClick - }, React.createElement(EdgeComponent, props)); - }); - EdgeWrapper.displayName = 'EdgeWrapper'; - EdgeWrapper.whyDidYouRender = false; - return EdgeWrapper; +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, rest = __rest(_a, ["id", "source", "target", "type", "animated", "selected", "onClick"]); + var edgeClasses = classnames('react-flow__edge', { selected: selected, animated: animated }); + var onEdgeClick = function (evt) { + if (isInputDOMNode(evt)) { + return false; + } + store.dispatch.setSelectedElements({ id: id, source: source, target: target }); + onClick({ id: id, source: source, target: target, type: type }); + }; + return (React.createElement("g", { className: edgeClasses, onClick: onEdgeClick }, + React.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 specialTypes = Object.keys(edgeTypes).filter(function (k) { - return !['default', 'bezier'].includes(k); - }).reduce(function (res, key) { - res[key] = wrapEdge(edgeTypes[key] || BezierEdge); - return res; - }, {}); - return _objectSpread2$1({}, standardTypes, {}, specialTypes); +function createEdgeTypes(edgeTypes) { + var standardTypes = { + default: wrapEdge((edgeTypes.default || BezierEdge)), + straight: wrapEdge((edgeTypes.bezier || StraightEdge)) + }; + 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; + }, {}); + return __assign(__assign({}, standardTypes), specialTypes); } function styleInject(css, ref) { @@ -9402,173 +8844,87 @@ function styleInject(css, ref) { var css = ".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 {stroke-dashoffset: 10}\n}\n\n@keyframes dashdraw {\n from {stroke-dashoffset: 10}\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.react-flow__node {\n position: absolute;\n color: #222;\n font-family: sans-serif;\n font-size: 12px;\n text-align: center;\n cursor: -webkit-grab;\n cursor: grab;\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:hover > * {\n box-shadow: 0 1px 5px 2px rgba(0, 0, 0, 0.08);\n }\n\n.react-flow__node.selected > * {\n box-shadow: 0 0 0 2px #555;\n }\n\n.react-flow__handle {\n position: absolute;\n width: 10px;\n height: 8px;\n background: rgba(255, 255, 255, 0.4);\n cursor: crosshair;\n}\n\n.react-flow__handle.bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 0);\n }\n\n.react-flow__handle.top {\n left: 50%;\n top: 0;\n transform: translate(-50%, 0);\n }\n\n.react-flow__handle.left {\n top: 50%;\n left: 0;\n transform: translate(0, -50%);\n\n }\n\n.react-flow__handle.right {\n right: 0;\n top: 50%;\n transform: translate(0, -50%);\n }\n\n.react-flow__nodesselection {\n z-index: 3;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n transform-origin: left top;\n pointer-events: none;\n}\n\n.react-flow__nodesselection-rect {\n position: absolute;\n background: rgba(0, 89, 220, 0.08);\n border: 1px dotted rgba(0, 89, 220, 0.8);\n pointer-events: all;\n }\n\n.react-flow__controls {\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); -var ReactFlow = function ReactFlow(_ref) { - var style = _ref.style, - onElementClick = _ref.onElementClick, - elements = _ref.elements, - children = _ref.children, - nodeTypes = _ref.nodeTypes, - edgeTypes = _ref.edgeTypes, - onLoad = _ref.onLoad, - onMove = _ref.onMove, - onElementsRemove = _ref.onElementsRemove, - onConnect = _ref.onConnect, - onNodeDragStop = _ref.onNodeDragStop, - connectionLineType = _ref.connectionLineType, - connectionLineStyle = _ref.connectionLineStyle, - deleteKeyCode = _ref.deleteKeyCode, - selectionKeyCode = _ref.selectionKeyCode, - showBackground = _ref.showBackground, - backgroundGap = _ref.backgroundGap, - backgroundType = _ref.backgroundType, - backgroundColor = _ref.backgroundColor; - var nodeTypesParsed = useMemo(function () { - return createNodeTypes(nodeTypes); - }, []); - var edgeTypesParsed = useMemo(function () { - return createEdgeTypes(edgeTypes); - }, []); - return React.createElement("div", { - style: style, - className: "react-flow" - }, React.createElement(StoreProvider, { - store: store - }, React.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 - }), children)); -}; - -ReactFlow.displayName = 'ReactFlow'; -ReactFlow.propTypes = { - onElementClick: propTypes.func, - onElementsRemove: propTypes.func, - onNodeDragStop: propTypes.func, - onConnect: propTypes.func, - onLoad: propTypes.func, - onMove: propTypes.func, - nodeTypes: propTypes.object, - edgeTypes: propTypes.object, - connectionLineType: propTypes.string, - connectionLineStyle: propTypes.object, - deleteKeyCode: propTypes.number, - selectionKeyCode: propTypes.number, - gridColor: propTypes.string, - gridGap: propTypes.number, - showBackground: propTypes.bool, - backgroundType: propTypes.oneOf(['lines', 'dots']) -}; -ReactFlow.defaultProps = { - onElementClick: function onElementClick() {}, - onElementsRemove: function onElementsRemove() {}, - onNodeDragStop: function onNodeDragStop() {}, - onConnect: function onConnect() {}, - onLoad: function onLoad() {}, - onMove: function onMove() {}, - 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: 'dots' +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; + var nodeTypesParsed = useMemo(function () { return createNodeTypes(nodeTypes); }, []); + var edgeTypesParsed = useMemo(function () { return createEdgeTypes(edgeTypes); }, []); + return (React.createElement("div", { style: style, className: "react-flow" }, + React.createElement(StoreProvider, { store: store }, + React.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 }), + 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 }; -var baseStyle = { - position: 'absolute', - zIndex: 5, - bottom: 10, - right: 10, - width: 200 -}; -var index = (function (_ref) { - var _ref$style = _ref.style, - style = _ref$style === void 0 ? {} : _ref$style, - className = _ref.className, - _ref$bgColor = _ref.bgColor, - bgColor = _ref$bgColor === void 0 ? '#f8f8f8' : _ref$bgColor, - _ref$nodeColor = _ref.nodeColor, - nodeColor = _ref$nodeColor === void 0 ? '#ddd' : _ref$nodeColor; - var canvasNode = useRef(null); - var state = useStoreState(function (s) { - return { - width: s.width, - height: s.height, - nodes: s.nodes, - transform: s.transform - }; - }); - var mapClasses = classnames('react-flow__minimap', className); - var nodePositions = state.nodes.map(function (n) { - return n.__rg.position; - }); - var width = style.width || baseStyle.width; - var height = state.height / (state.width || 1) * width; - var bbox = { - x: 0, - y: 0, - width: state.width, - height: state.height - }; - var scaleFactor = width / state.width; - var nodeColorFunc = isFunction(nodeColor) ? nodeColor : function () { - return nodeColor; - }; - useEffect(function () { - if (canvasNode) { - var ctx = canvasNode.current.getContext('2d'); - var nodesInside = getNodesInside(state.nodes, bbox, state.transform, true); - ctx.fillStyle = bgColor; - ctx.fillRect(0, 0, width, height); - nodesInside.forEach(function (n) { - var pos = n.__rg.position; - var transformX = state.transform[0]; - var transformY = state.transform[1]; - var x = pos.x * state.transform[2] + transformX; - var y = pos.y * state.transform[2] + transformY; - ctx.fillStyle = nodeColorFunc(n); - ctx.fillRect(x * scaleFactor, y * scaleFactor, n.__rg.width * scaleFactor * state.transform[2], n.__rg.height * scaleFactor * state.transform[2]); - }); - } - }, [nodePositions, state.transform, height]); - return React.createElement("canvas", { - style: _objectSpread2$1({}, baseStyle, {}, style, { - height: height - }), - width: width, - height: height, - className: mapClasses, - ref: canvasNode - }); +var baseStyle = { + position: 'absolute', + zIndex: 5, + bottom: 10, + right: 10, + width: 200 +}; +var index = (function (_a) { + var _b = _a.style, style = _b === void 0 ? {} : _b, className = _a.className, _c = _a.bgColor, bgColor = _c === void 0 ? '#f8f8f8' : _c, _d = _a.nodeColor, nodeColor = _d === void 0 ? '#ddd' : _d; + var canvasNode = useRef(null); + var state = useStoreState$1(function (s) { return ({ + width: s.width, + height: s.height, + nodes: s.nodes, + transform: s.transform, + }); }); + var mapClasses = classnames('react-flow__minimap', className); + var nodePositions = state.nodes.map(function (n) { return n.__rg.position; }); + var width = +(style.width || baseStyle.width || 0); + var height = (state.height / (state.width || 1)) * width; + var bbox = { x: 0, y: 0, width: state.width, height: state.height }; + var scaleFactor = width / state.width; + var nodeColorFunc = (nodeColor instanceof Function ? nodeColor : function () { return nodeColor; }); + useEffect(function () { + if (canvasNode && canvasNode.current) { + var ctx_1 = canvasNode.current.getContext('2d'); + var nodesInside = getNodesInside(state.nodes, bbox, state.transform, true); + ctx_1.fillStyle = bgColor; + ctx_1.fillRect(0, 0, width, height); + nodesInside.forEach(function (n) { + var pos = n.__rg.position; + var transformX = state.transform[0]; + var transformY = state.transform[1]; + var x = (pos.x * state.transform[2]) + transformX; + var y = (pos.y * state.transform[2]) + transformY; + ctx_1.fillStyle = nodeColorFunc(n); + ctx_1.fillRect((x * scaleFactor), (y * scaleFactor), n.__rg.width * scaleFactor * state.transform[2], n.__rg.height * scaleFactor * state.transform[2]); + }); + } + }, [canvasNode.current, nodePositions, state.transform, height]); + return (React.createElement("canvas", { style: __assign(__assign(__assign({}, baseStyle), style), { height: height }), width: width, height: height, className: mapClasses, ref: canvasNode })); }); -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); } +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); } var _ref = /*#__PURE__*/ @@ -9577,12 +8933,12 @@ React.createElement("path", { }); var SvgPlus = function SvgPlus(props) { - return React.createElement("svg", _extends$2({ + return React.createElement("svg", _extends$1({ 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); } +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$1 = /*#__PURE__*/ @@ -9591,12 +8947,12 @@ React.createElement("path", { }); var SvgMinus = function SvgMinus(props) { - return React.createElement("svg", _extends$3({ + return React.createElement("svg", _extends$2({ 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); } +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$2 = /*#__PURE__*/ @@ -9605,34 +8961,27 @@ React.createElement("path", { }); var SvgFitview = function SvgFitview(props) { - return React.createElement("svg", _extends$4({ + return React.createElement("svg", _extends$3({ viewBox: "0 0 512 512" }, props), _ref$2); }; -var baseStyle$1 = { - position: 'absolute', - zIndex: 5, - bottom: 10, - left: 10 -}; -var index$1 = (function (_ref) { - var style = _ref.style, - className = _ref.className; - var mapClasses = classnames('react-flow__controls', className); - return React.createElement("div", { - className: mapClasses, - style: _objectSpread2$1({}, baseStyle$1, {}, style) - }, React.createElement("div", { - className: "react-flow__controls-button react-flow__controls-zoomin", - onClick: zoomIn - }, React.createElement(SvgPlus, null)), React.createElement("div", { - className: "react-flow__controls-button react-flow__controls-zoomout", - onClick: zoomOut - }, React.createElement(SvgMinus, null)), React.createElement("div", { - className: "react-flow__controls-button react-flow__controls-fitview", - onClick: fitView - }, React.createElement(SvgFitview, null))); +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.createElement("div", { className: mapClasses, style: __assign(__assign({}, baseStyle$1), style) }, + React.createElement("div", { className: "react-flow__controls-button react-flow__controls-zoomin", onClick: zoomIn }, + React.createElement(SvgPlus, null)), + React.createElement("div", { className: "react-flow__controls-button react-flow__controls-zoomout", onClick: zoomOut }, + React.createElement(SvgMinus, null)), + React.createElement("div", { className: "react-flow__controls-button react-flow__controls-fitview", onClick: function () { return fitView(); } }, + React.createElement(SvgFitview, null)))); }); export default ReactFlow; diff --git a/dist/ReactFlow.esm.js.map b/dist/ReactFlow.esm.js.map index 2c7969a4f..74e7813cd 100644 --- a/dist/ReactFlow.esm.js.map +++ b/dist/ReactFlow.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"ReactFlow.esm.js","sources":["../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../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/dist/easy-peasy.esm.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/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","../src/store/actions.js","../src/store/index.js","../src/utils/index.js","../src/utils/graph.js","../src/container/NodeRenderer/index.js","../node_modules/classnames/index.js","../src/components/ConnectionLine/index.js","../src/container/EdgeRenderer/index.js","../src/container/BackgroundRenderer/Grid.js","../src/container/BackgroundRenderer/index.js","../src/components/UserSelection/index.js","../node_modules/react-draggable/build/utils/shims.js","../node_modules/react-draggable/build/utils/getPrefix.js","../node_modules/react-draggable/build/utils/domFns.js","../node_modules/react-draggable/build/utils/positionFns.js","../node_modules/react-draggable/build/utils/log.js","../node_modules/react-draggable/build/DraggableCore.js","../node_modules/react-draggable/build/Draggable.js","../node_modules/react-draggable/index.js","../src/components/NodesSelection/index.js","../src/hooks/useKeyPress.js","../src/hooks/useD3Zoom.js","../src/hooks/useGlobalKeyHandler.js","../src/hooks/useElementUpdater.js","../src/container/GraphView/index.js","../src/components/Handle/BaseHandle.js","../src/contexts/NodeIdContext.js","../src/components/Handle/index.js","../src/components/Nodes/DefaultNode.js","../src/components/Nodes/InputNode.js","../src/components/Nodes/OutputNode.js","../src/components/Nodes/wrapNode.js","../src/container/NodeRenderer/utils.js","../src/components/Edges/BezierEdge.js","../src/components/Edges/StraightEdge.js","../src/components/Edges/StepEdge.js","../src/components/Edges/wrapEdge.js","../src/container/EdgeRenderer/utils.js","../node_modules/style-inject/dist/style-inject.es.js","../src/container/ReactFlow/index.js","../src/plugins/MiniMap/index.js","../src/plugins/Controls/index.js"],"sourcesContent":["/**\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 ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\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 };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\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","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#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","function Similar() {\n\tthis.list = [];\n\tthis.lastItem = undefined;\n\tthis.size = 0;\n\n\treturn this;\n}\n\nSimilar.prototype.get = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn this.lastItem.val;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn this.list[index].val;\n\t}\n\n\treturn undefined;\n};\n\nSimilar.prototype.set = function(key, val) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem.val = val;\n\t\treturn this;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\tthis.list[index].val = val;\n\t\treturn this;\n\t}\n\n\tthis.lastItem = { key: key, val: val };\n\tthis.list.push(this.lastItem);\n\tthis.size++;\n\n\treturn this;\n};\n\nSimilar.prototype.delete = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem = undefined;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.size--;\n\t\treturn this.list.splice(index, 1)[0];\n\t}\n\n\treturn undefined;\n};\n\n\n// important that has() doesn't use get() in case an existing key has a falsy value, in which case has() would return false\nSimilar.prototype.has = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn true;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nSimilar.prototype.forEach = function(callback, thisArg) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tcallback.call(thisArg || this, this.list[i].val, this.list[i].key, this);\n\t}\n};\n\nSimilar.prototype.indexOf = function(key) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tif (this.isEqual(this.list[i].key, key)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nSimilar.prototype.isEqual = function(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n};\n\nmodule.exports = Similar;","module.exports = function(forceSimilar) {\n\tif (typeof Map !== 'function' || forceSimilar) {\n\t\tvar Similar = require('./similar');\n\t\treturn new Similar();\n\t}\n\telse {\n\t\treturn new Map();\n\t}\n}\n","var MapOrSimilar = require('map-or-similar');\n\nmodule.exports = function (limit) {\n\tvar cache = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true'),\n\t\tlru = [];\n\n\treturn function (fn) {\n\t\tvar memoizerific = function () {\n\t\t\tvar currentCache = cache,\n\t\t\t\tnewMap,\n\t\t\t\tfnResult,\n\t\t\t\targsLengthMinusOne = arguments.length - 1,\n\t\t\t\tlruPath = Array(argsLengthMinusOne + 1),\n\t\t\t\tisMemoized = true,\n\t\t\t\ti;\n\n\t\t\tif ((memoizerific.numArgs || memoizerific.numArgs === 0) && memoizerific.numArgs !== argsLengthMinusOne + 1) {\n\t\t\t\tthrow new Error('Memoizerific functions should always be called with the same number of arguments');\n\t\t\t}\n\n\t\t\t// loop through each argument to traverse the map tree\n\t\t\tfor (i = 0; i < argsLengthMinusOne; i++) {\n\t\t\t\tlruPath[i] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[i]\n\t\t\t\t};\n\n\t\t\t\t// climb through the hierarchical map tree until the second-last argument has been found, or an argument is missing.\n\t\t\t\t// if all arguments up to the second-last have been found, this will potentially be a cache hit (determined later)\n\t\t\t\tif (currentCache.has(arguments[i])) {\n\t\t\t\t\tcurrentCache = currentCache.get(arguments[i]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tisMemoized = false;\n\n\t\t\t\t// make maps until last value\n\t\t\t\tnewMap = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true');\n\t\t\t\tcurrentCache.set(arguments[i], newMap);\n\t\t\t\tcurrentCache = newMap;\n\t\t\t}\n\n\t\t\t// we are at the last arg, check if it is really memoized\n\t\t\tif (isMemoized) {\n\t\t\t\tif (currentCache.has(arguments[argsLengthMinusOne])) {\n\t\t\t\t\tfnResult = currentCache.get(arguments[argsLengthMinusOne]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tisMemoized = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the result wasn't memoized, compute it and cache it\n\t\t\tif (!isMemoized) {\n\t\t\t\tfnResult = fn.apply(null, arguments);\n\t\t\t\tcurrentCache.set(arguments[argsLengthMinusOne], fnResult);\n\t\t\t}\n\n\t\t\t// if there is a cache limit, purge any extra results\n\t\t\tif (limit > 0) {\n\t\t\t\tlruPath[argsLengthMinusOne] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[argsLengthMinusOne]\n\t\t\t\t};\n\n\t\t\t\tif (isMemoized) {\n\t\t\t\t\tmoveToMostRecentLru(lru, lruPath);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlru.push(lruPath);\n\t\t\t\t}\n\n\t\t\t\tif (lru.length > limit) {\n\t\t\t\t\tremoveCachedResult(lru.shift());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmemoizerific.wasMemoized = isMemoized;\n\t\t\tmemoizerific.numArgs = argsLengthMinusOne + 1;\n\n\t\t\treturn fnResult;\n\t\t};\n\n\t\tmemoizerific.limit = limit;\n\t\tmemoizerific.wasMemoized = false;\n\t\tmemoizerific.cache = cache;\n\t\tmemoizerific.lru = lru;\n\n\t\treturn memoizerific;\n\t};\n};\n\n// move current args to most recent position\nfunction moveToMostRecentLru(lru, lruPath) {\n\tvar lruLen = lru.length,\n\t\tlruPathLen = lruPath.length,\n\t\tisMatch,\n\t\ti, ii;\n\n\tfor (i = 0; i < lruLen; i++) {\n\t\tisMatch = true;\n\t\tfor (ii = 0; ii < lruPathLen; ii++) {\n\t\t\tif (!isEqual(lru[i][ii].arg, lruPath[ii].arg)) {\n\t\t\t\tisMatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (isMatch) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlru.push(lru.splice(i, 1)[0]);\n}\n\n// remove least recently used cache item and all dead branches\nfunction removeCachedResult(removedLru) {\n\tvar removedLruLen = removedLru.length,\n\t\tcurrentLru = removedLru[removedLruLen - 1],\n\t\ttmp,\n\t\ti;\n\n\tcurrentLru.cacheItem.delete(currentLru.arg);\n\n\t// walk down the tree removing dead branches (size 0) along the way\n\tfor (i = removedLruLen - 2; i >= 0; i--) {\n\t\tcurrentLru = removedLru[i];\n\t\ttmp = currentLru.cacheItem.get(currentLru.arg);\n\n\t\tif (!tmp || !tmp.size) {\n\t\t\tcurrentLru.cacheItem.delete(currentLru.arg);\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nfunction isEqual(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n}","import { isDraft, finishDraft, createDraft, setAutoFreeze } from 'immer-peasy';\nimport React, { createContext, useContext, useRef, useReducer, useLayoutEffect, useEffect, useMemo, useState } from 'react';\nimport { compose, createStore as createStore$1, applyMiddleware } from 'redux';\nimport reduxThunk from 'redux-thunk';\nimport memoizerific from 'memoizerific';\n\nvar StoreContext = createContext();\n\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction createStoreStateHook(Context) {\n return function useStoreState(mapState) {\n var store = useContext(Context);\n var mapStateRef = useRef(mapState);\n var stateRef = useRef();\n var mountedRef = useRef(true);\n var subscriptionMapStateError = useRef();\n\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n if (subscriptionMapStateError.current || mapStateRef.current !== mapState || stateRef.current === undefined) {\n try {\n stateRef.current = mapState(store.getState());\n } catch (err) {\n var errorMessage = \"An error occurred trying to map state in a useStoreState hook: \" + err.message + \".\";\n\n if (subscriptionMapStateError.current) {\n errorMessage += \"\\nThis error may be related to the following error:\\n\" + subscriptionMapStateError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n }\n\n useIsomorphicLayoutEffect(function () {\n mapStateRef.current = mapState;\n subscriptionMapStateError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n var checkMapState = function checkMapState() {\n try {\n var newState = mapStateRef.current(store.getState());\n\n if (newState === stateRef.current) {\n return;\n }\n\n stateRef.current = newState;\n } catch (err) {\n // see https://github.com/reduxjs/react-redux/issues/1179\n // There is a possibility mapState will fail due to stale state or\n // props, therefore we will just track the error and force our\n // component to update. It should then receive the updated state\n subscriptionMapStateError.current = err;\n }\n\n if (mountedRef.current) {\n forceRender({});\n }\n };\n\n var unsubscribe = store.subscribe(checkMapState);\n checkMapState();\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, []);\n return stateRef.current;\n };\n}\nvar useStoreState = createStoreStateHook(StoreContext);\nfunction createStoreActionsHook(Context) {\n return function useStoreActions(mapActions) {\n var store = useContext(Context);\n return mapActions(store.getActions());\n };\n}\nvar useStoreActions = createStoreActionsHook(StoreContext);\nfunction createStoreDispatchHook(Context) {\n return function useStoreDispatch() {\n var store = useContext(Context);\n return store.dispatch;\n };\n}\nvar useStoreDispatch = createStoreDispatchHook(StoreContext);\nfunction useStore() {\n return useContext(StoreContext);\n}\nfunction createTypedHooks() {\n return {\n useStoreActions: useStoreActions,\n useStoreDispatch: useStoreDispatch,\n useStoreState: useStoreState,\n useStore: useStore\n };\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar actionSymbol = '🙈action🙈';\nvar actionOnSymbol = '🙈actionOn🙈';\nvar computedSymbol = '🙈computedSymbol🙈';\nvar reducerSymbol = '🙈reducer🙈';\nvar thunkOnSymbol = '🙈thunkOn🙈';\nvar thunkSymbol = '🙈thunk🙈';\n\nvar debug = function debug(state) {\n if (isDraft(state)) {\n return finishDraft(createDraft(state));\n }\n\n return state;\n};\nvar memo = function memo(fn, cacheSize) {\n return memoizerific(cacheSize)(fn);\n};\nvar actionOn = function actionOn(targetResolver, fn) {\n fn[actionOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar action = function action(fn) {\n fn[actionSymbol] = {};\n return fn;\n};\nvar defaultStateResolvers = [function (state) {\n return state;\n}];\nvar computed = function computed(fnOrStateResolvers, fn) {\n if (typeof fn === 'function') {\n fn[computedSymbol] = {\n stateResolvers: fnOrStateResolvers\n };\n return fn;\n }\n\n fnOrStateResolvers[computedSymbol] = {\n stateResolvers: defaultStateResolvers\n };\n return fnOrStateResolvers;\n};\nvar thunkOn = function thunkOn(targetResolver, fn) {\n fn[thunkOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar thunk = function thunk(fn) {\n fn[thunkSymbol] = {};\n return fn;\n};\nvar reducer = function reducer(fn) {\n fn[reducerSymbol] = {};\n return fn;\n};\n\nvar isStateObject = function isStateObject(x) {\n return x !== null && typeof x === 'object' && !Array.isArray(x) && x.constructor === Object;\n};\nvar get = function get(path, target) {\n return path.reduce(function (acc, cur) {\n return isStateObject(acc) ? acc[cur] : undefined;\n }, target);\n};\nvar set = function set(path, target, value) {\n path.reduce(function (acc, cur, idx) {\n if (idx + 1 === path.length) {\n acc[cur] = value;\n } else {\n acc[cur] = acc[cur] || {};\n }\n\n return acc[cur];\n }, target);\n};\n\nvar newify = function newify(currentPath, currentState, finalValue) {\n if (currentPath.length === 0) {\n return finalValue;\n }\n\n var newState = _extends({}, currentState);\n\n var key = currentPath[0];\n\n if (currentPath.length === 1) {\n newState[key] = finalValue;\n } else {\n newState[key] = newify(currentPath.slice(1), newState[key], finalValue);\n }\n\n return newState;\n};\n\nfunction createStoreInternals(_ref) {\n var disableImmer = _ref.disableImmer,\n initialState = _ref.initialState,\n injections = _ref.injections,\n model = _ref.model,\n reducerEnhancer = _ref.reducerEnhancer,\n references = _ref.references;\n\n function simpleProduce(path, state, fn) {\n if (disableImmer) {\n var _current = get(path, state);\n\n var next = fn(_current);\n\n if (_current !== next) {\n return newify(path, state, next);\n }\n\n return state;\n }\n\n var draft = createDraft(state);\n\n var current = get(path, draft);\n\n fn(current);\n return finishDraft(draft);\n }\n\n var defaultState = initialState;\n var actionCreatorDict = {};\n var actionCreators = {};\n var actionReducersDict = {};\n var actionThunks = {};\n var computedProperties = [];\n var customReducers = [];\n var listenerActionCreators = {};\n var listenerActionMap = {};\n var listenerDefinitions = [];\n var computedState = {\n isInReducer: false,\n currentState: defaultState\n };\n\n var recursiveExtractDefsFromModel = function recursiveExtractDefsFromModel(current, parentPath) {\n return Object.keys(current).forEach(function (key) {\n var value = current[key];\n var path = [].concat(parentPath, [key]);\n var meta = {\n parent: parentPath,\n path: path\n };\n\n var handleValueAsState = function handleValueAsState() {\n var initialParentRef = get(parentPath, initialState);\n\n if (initialParentRef && key in initialParentRef) {\n set(path, defaultState, initialParentRef[key]);\n } else {\n set(path, defaultState, value);\n }\n };\n\n if (typeof value === 'function') {\n if (value[actionSymbol] || value[actionOnSymbol]) {\n var prefix = value[actionSymbol] ? '@action' : '@actionOn';\n var type = prefix + \".\" + path.join('.');\n var actionMeta = value[actionSymbol] || value[actionOnSymbol];\n actionMeta.actionName = key;\n actionMeta.type = type;\n actionMeta.parent = meta.parent;\n actionMeta.path = meta.path; // Action Reducer\n\n actionReducersDict[type] = value; // Action Creator\n\n var actionCreator = function actionCreator(payload) {\n var actionDefinition = {\n type: type,\n payload: payload\n };\n\n if (value[actionOnSymbol] && actionMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(actionMeta.resolvedTargets);\n }\n\n var result = references.dispatch(actionDefinition);\n return result;\n };\n\n actionCreator.type = type;\n actionCreatorDict[type] = actionCreator;\n\n if (key !== 'easyPeasyReplaceState') {\n if (value[actionOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, actionCreator);\n } else {\n set(path, actionCreators, actionCreator);\n }\n }\n } else if (value[thunkSymbol] || value[thunkOnSymbol]) {\n var _prefix = value[thunkSymbol] ? '@thunk' : '@thunkOn';\n\n var _type = _prefix + \".\" + path.join('.');\n\n var thunkMeta = value[thunkSymbol] || value[thunkOnSymbol];\n thunkMeta.actionName = key;\n thunkMeta.type = _type;\n thunkMeta.parent = meta.parent;\n thunkMeta.path = meta.path; // Thunk Action\n\n var thunkHandler = function thunkHandler(payload) {\n var helpers = {\n dispatch: references.dispatch,\n getState: function getState() {\n return get(parentPath, references.getState());\n },\n getStoreActions: function getStoreActions() {\n return actionCreators;\n },\n getStoreState: references.getState,\n injections: injections,\n meta: meta\n };\n\n if (value[thunkOnSymbol] && thunkMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(thunkMeta.resolvedTargets);\n }\n\n return value(get(parentPath, actionCreators), payload, helpers);\n };\n\n set(path, actionThunks, thunkHandler); // Thunk Action Creator\n\n var startType = _type + \"(start)\";\n var successType = _type + \"(success)\";\n var failType = _type + \"(fail)\";\n\n var _actionCreator = function _actionCreator(payload) {\n var dispatchError = function dispatchError(err) {\n references.dispatch({\n type: failType,\n payload: payload,\n error: err\n });\n references.dispatch({\n type: _type,\n payload: payload,\n error: err\n });\n };\n\n var dispatchSuccess = function dispatchSuccess(result) {\n references.dispatch({\n type: successType,\n payload: payload,\n result: result\n });\n references.dispatch({\n type: _type,\n payload: payload,\n result: result\n });\n };\n\n references.dispatch({\n type: startType,\n payload: payload\n });\n\n try {\n var result = references.dispatch(function () {\n return thunkHandler(payload);\n });\n\n if (typeof result === 'object' && typeof result.then === 'function') {\n return result.then(function (resolved) {\n dispatchSuccess(resolved);\n return resolved;\n }).catch(function (err) {\n dispatchError(err);\n throw err;\n });\n }\n\n dispatchSuccess(result);\n return result;\n } catch (err) {\n dispatchError(err);\n throw err;\n }\n };\n\n _actionCreator.type = _type;\n _actionCreator.startType = startType;\n _actionCreator.successType = successType;\n _actionCreator.failType = failType;\n actionCreatorDict[_type] = _actionCreator;\n\n if (value[thunkOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, _actionCreator);\n } else {\n set(path, actionCreators, _actionCreator);\n }\n } else if (value[computedSymbol]) {\n var parent = get(parentPath, defaultState);\n\n var computedMeta = value[computedSymbol];\n var memoisedResultFn = memoizerific(1)(value);\n\n var createComputedProperty = function createComputedProperty(o) {\n Object.defineProperty(o, key, {\n configurable: true,\n enumerable: true,\n get: function get$1() {\n var storeState;\n\n if (computedState.isInReducer) {\n storeState = computedState.currentState;\n } else if (references.getState == null) {\n return undefined;\n } else {\n try {\n storeState = references.getState();\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Invalid access attempt to a computed property');\n }\n\n return undefined;\n }\n }\n\n var state = get(parentPath, storeState);\n\n var inputs = computedMeta.stateResolvers.map(function (resolver) {\n return resolver(state, storeState);\n });\n return memoisedResultFn.apply(void 0, inputs);\n }\n });\n };\n\n createComputedProperty(parent);\n computedProperties.push({\n key: key,\n parentPath: parentPath,\n createComputedProperty: createComputedProperty\n });\n } else if (value[reducerSymbol]) {\n customReducers.push({\n key: key,\n parentPath: parentPath,\n reducer: value\n });\n } else {\n handleValueAsState();\n }\n } else if (isStateObject(value)) {\n var existing = get(path, defaultState);\n\n if (existing == null) {\n set(path, defaultState, {});\n }\n\n recursiveExtractDefsFromModel(value, path);\n } else {\n handleValueAsState();\n }\n });\n };\n\n recursiveExtractDefsFromModel(model, []);\n listenerDefinitions.forEach(function (listenerActionOrThunk) {\n var listenerMeta = listenerActionOrThunk[actionOnSymbol] || listenerActionOrThunk[thunkOnSymbol];\n var targets = listenerMeta.targetResolver(get(listenerMeta.parent, actionCreators), actionCreators);\n var targetTypes = (Array.isArray(targets) ? targets : [targets]).reduce(function (acc, target) {\n if (typeof target === 'function' && target.type && actionCreatorDict[target.type]) {\n acc.push(target.type);\n } else if (typeof target === 'string') {\n acc.push(target);\n }\n\n return acc;\n }, []);\n listenerMeta.resolvedTargets = targetTypes;\n targetTypes.forEach(function (targetType) {\n var listenerReg = listenerActionMap[targetType] || [];\n listenerReg.push(actionCreatorDict[listenerMeta.type]);\n listenerActionMap[targetType] = listenerReg;\n });\n });\n\n var createReducer = function createReducer() {\n var runActionReducerAtPath = function runActionReducerAtPath(state, action, actionReducer, path) {\n return simpleProduce(path, state, function (draft) {\n return actionReducer(draft, action.payload);\n });\n };\n\n var reducerForActions = function reducerForActions(state, action) {\n var actionReducer = actionReducersDict[action.type];\n\n if (actionReducer) {\n var actionMeta = actionReducer[actionSymbol] || actionReducer[actionOnSymbol];\n return runActionReducerAtPath(state, action, actionReducer, actionMeta.parent);\n }\n\n return state;\n };\n\n var reducerForCustomReducers = function reducerForCustomReducers(state, action) {\n return customReducers.reduce(function (acc, _ref2) {\n var parentPath = _ref2.parentPath,\n key = _ref2.key,\n red = _ref2.reducer;\n return simpleProduce(parentPath, acc, function (draft) {\n draft[key] = red(draft[key], action);\n return draft;\n });\n }, state);\n };\n\n var rootReducer = function rootReducer(state, action) {\n var stateAfterActions = reducerForActions(state, action);\n var next = customReducers.length > 0 ? reducerForCustomReducers(stateAfterActions, action) : stateAfterActions;\n\n if (state !== next) {\n computedProperties.forEach(function (_ref3) {\n var parentPath = _ref3.parentPath,\n createComputedProperty = _ref3.createComputedProperty;\n createComputedProperty(get(parentPath, next));\n });\n }\n\n return next;\n };\n\n return rootReducer;\n };\n\n return {\n actionCreatorDict: actionCreatorDict,\n actionCreators: actionCreators,\n computedProperties: computedProperties,\n computedState: computedState,\n defaultState: defaultState,\n listenerActionCreators: listenerActionCreators,\n listenerActionMap: listenerActionMap,\n reducer: reducerEnhancer(createReducer())\n };\n}\n\nfunction createStore(model, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n compose$1 = _options.compose,\n _options$devTools = _options.devTools,\n devTools = _options$devTools === void 0 ? true : _options$devTools,\n _options$disableImmer = _options.disableImmer,\n disableImmer = _options$disableImmer === void 0 ? false : _options$disableImmer,\n _options$enhancers = _options.enhancers,\n enhancers = _options$enhancers === void 0 ? [] : _options$enhancers,\n _options$initialState = _options.initialState,\n initialState = _options$initialState === void 0 ? {} : _options$initialState,\n injections = _options.injections,\n _options$middleware = _options.middleware,\n middleware = _options$middleware === void 0 ? [] : _options$middleware,\n _options$mockActions = _options.mockActions,\n mockActions = _options$mockActions === void 0 ? false : _options$mockActions,\n _options$name = _options.name,\n storeName = _options$name === void 0 ? \"EasyPeasyStore\" : _options$name,\n _options$reducerEnhan = _options.reducerEnhancer,\n reducerEnhancer = _options$reducerEnhan === void 0 ? function (rootReducer) {\n return rootReducer;\n } : _options$reducerEnhan;\n\n var bindReplaceState = function bindReplaceState(modelDef) {\n return _extends({}, modelDef, {\n easyPeasyReplaceState: action(function (state, payload) {\n return payload;\n })\n });\n };\n\n var modelDefinition = bindReplaceState(model);\n var mockedActions = [];\n var references = {};\n\n var bindStoreInternals = function bindStoreInternals(state) {\n if (state === void 0) {\n state = {};\n }\n\n references.internals = createStoreInternals({\n disableImmer: disableImmer,\n initialState: state,\n injections: injections,\n model: modelDefinition,\n reducerEnhancer: reducerEnhancer,\n references: references\n });\n };\n\n bindStoreInternals(initialState);\n\n var listenerActionsMiddleware = function listenerActionsMiddleware() {\n return function (next) {\n return function (action) {\n var result = next(action);\n\n if (action && references.internals.listenerActionMap[action.type] && references.internals.listenerActionMap[action.type].length > 0) {\n var sourceAction = references.internals.actionCreatorDict[action.type];\n references.internals.listenerActionMap[action.type].forEach(function (actionCreator) {\n actionCreator({\n type: sourceAction ? sourceAction.type : action.type,\n payload: action.payload,\n error: action.error,\n result: action.result\n });\n });\n }\n\n return result;\n };\n };\n };\n\n var mockActionsMiddleware = function mockActionsMiddleware() {\n return function () {\n return function (action) {\n if (action != null) {\n mockedActions.push(action);\n }\n\n return undefined;\n };\n };\n };\n\n var computedPropertiesMiddleware = function computedPropertiesMiddleware(store) {\n return function (next) {\n return function (action) {\n references.internals.computedState.currentState = store.getState();\n references.internals.computedState.isInReducer = true;\n return next(action);\n };\n };\n };\n\n var easyPeasyMiddleware = [computedPropertiesMiddleware, reduxThunk].concat(middleware, [listenerActionsMiddleware]);\n\n if (mockActions) {\n easyPeasyMiddleware.push(mockActionsMiddleware);\n }\n\n var composeEnhancers = compose$1 || (devTools && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: storeName\n }) : compose);\n var store = createStore$1(references.internals.reducer, references.internals.defaultState, composeEnhancers.apply(void 0, [applyMiddleware.apply(void 0, easyPeasyMiddleware)].concat(enhancers)));\n store.subscribe(function () {\n references.internals.computedState.isInReducer = false;\n });\n references.dispatch = store.dispatch;\n references.getState = store.getState;\n\n var bindActionCreators = function bindActionCreators() {\n Object.keys(store.dispatch).forEach(function (actionsKey) {\n delete store.dispatch[actionsKey];\n });\n Object.keys(references.internals.actionCreators).forEach(function (key) {\n store.dispatch[key] = references.internals.actionCreators[key];\n });\n };\n\n bindActionCreators();\n\n var rebindStore = function rebindStore(removeKey) {\n var currentState = store.getState();\n\n if (removeKey) {\n delete currentState[removeKey];\n }\n\n bindStoreInternals(store.getState());\n store.replaceReducer(references.internals.reducer);\n references.internals.actionCreatorDict['@action.easyPeasyReplaceState'](references.internals.defaultState);\n bindActionCreators();\n };\n\n return Object.assign(store, {\n addModel: function addModel(key, modelForKey) {\n if (modelDefinition[key] && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model already contains a model definition for \\\"\" + key + \"\\\"\");\n store.removeModel(key);\n }\n\n modelDefinition[key] = modelForKey;\n rebindStore();\n },\n clearMockedActions: function clearMockedActions() {\n mockedActions = [];\n },\n getActions: function getActions() {\n return references.internals.actionCreators;\n },\n getListeners: function getListeners() {\n return references.internals.listenerActionCreators;\n },\n getMockedActions: function getMockedActions() {\n return [].concat(mockedActions);\n },\n reconfigure: function reconfigure(newModel) {\n modelDefinition = bindReplaceState(newModel);\n rebindStore();\n },\n removeModel: function removeModel(key) {\n if (!modelDefinition[key]) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model does not contain a model definition for \\\"\" + key + \"\\\"\");\n }\n\n return;\n }\n\n delete modelDefinition[key];\n rebindStore(key);\n }\n });\n}\n\n/* eslint-disable react/prop-types */\nfunction createContextStore(model, config) {\n var StoreContext = createContext();\n\n function Provider(_ref) {\n var children = _ref.children,\n initialData = _ref.initialData;\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n }\n\n function useStore() {\n return useContext(StoreContext);\n }\n\n return {\n Provider: Provider,\n useStore: useStore,\n useStoreState: createStoreStateHook(StoreContext),\n useStoreActions: createStoreActionsHook(StoreContext),\n useStoreDispatch: createStoreDispatchHook(StoreContext)\n };\n}\n\n/**\n * Some good references on the topic of reinitialisation:\n * - https://github.com/facebook/react/issues/14830\n */\n\nfunction createComponentStore(model, config) {\n return function useLocalStore(initialData) {\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n var previousStateRef = useRef(store.getState());\n\n var _useState = useState(function () {\n return store.getState();\n }),\n currentState = _useState[0],\n setCurrentState = _useState[1];\n\n useEffect(function () {\n return store.subscribe(function () {\n var nextState = store.getState();\n\n if (previousStateRef.current !== nextState) {\n previousStateRef.current = nextState;\n setCurrentState(nextState);\n }\n });\n }, [store]);\n return [currentState, store.getActions()];\n };\n}\n\nvar StoreProvider = function StoreProvider(_ref) {\n var children = _ref.children,\n store = _ref.store;\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n};\n\n/**\n * The auto freeze feature of immer doesn't seem to work in our testing. We have\n * explicitly disabled it to avoid perf issues.\n */\n\nsetAutoFreeze(false);\n\nexport { StoreProvider, action, actionOn, computed, createComponentStore, createContextStore, createStore, createTypedHooks, debug, memo, reducer, thunk, thunkOn, useStore, useStoreActions, useStoreDispatch, useStoreState };\n//# sourceMappingURL=easy-peasy.esm.js.map\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","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 return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","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 if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import { action } from 'easy-peasy';\nimport isEqual from 'fast-deep-equal';\n\nimport { getBoundingBox, getNodesInside, getConnectedEdges } from '../utils/graph';\n\nexport default {\n setOnConnect: action((state, onConnect) => {\n state.onConnect = onConnect;\n }),\n\n setNodes: action((state, nodes) => {\n state.nodes = nodes;\n }),\n\n setEdges: action((state, edges) => {\n state.edges = edges;\n }),\n\n updateNodeData: action((state, { id, ...data }) => {\n state.nodes.forEach((n) => {\n if (n.id === id) {\n n.__rg = {\n ...n.__rg,\n ...data\n };\n }\n });\n }),\n\n updateNodePos: action((state, { id, pos }) => {\n state.nodes.forEach((n) => {\n if (n.id === id) {\n n.__rg = {\n ...n.__rg,\n position: pos\n };\n }\n });\n }),\n\n setSelection: action((state, isActive) => {\n state.selectionActive = isActive;\n }),\n\n setNodesSelection: action((state, { isActive, selection }) => {\n if (!isActive) {\n state.nodesSelectionActive = false;\n state.selectedElements = [];\n\n return;\n }\n const selectedNodes = getNodesInside(state.nodes, selection, state.transform);\n const selectedNodesBbox = getBoundingBox(selectedNodes);\n\n state.selection = selection;\n state.nodesSelectionActive = true;\n state.selectedNodesBbox = selectedNodesBbox;\n state.nodesSelectionActive = true;\n }),\n\n setSelectedElements: action((state, elements) => {\n const selectedElementsArr = Array.isArray(elements) ? elements : [elements];\n const selectedElementsUpdated = !isEqual(selectedElementsArr, state.selectedElements);\n const selectedElements = selectedElementsUpdated ? selectedElementsArr : state.selectedElements;\n\n state.selectedElements = selectedElements;\n }),\n\n updateSelection: action((state, selection) => {\n const selectedNodes = getNodesInside(state.nodes, selection, state.transform);\n const selectedEdges = getConnectedEdges(selectedNodes, state.edges);\n\n const nextSelectedElements = [...selectedNodes, ...selectedEdges];\n const selectedElementsUpdated = !isEqual(nextSelectedElements, state.selectedElements);\n\n state.selection = selection;\n state.selectedElements = selectedElementsUpdated ? nextSelectedElements: state.selectedElements\n }),\n\n updateTransform: action((state, transform) => {\n state.transform = [transform.x, transform.y, transform.k];\n }),\n\n updateSize: action((state, size) => {\n state.width = size.width;\n state.height = size.height;\n }),\n\n initD3: action((state, { zoom, selection }) => {\n state.d3Zoom = zoom;\n state.d3Selection = selection;\n state.d3Initialised = true;\n }),\n\n setConnectionPosition: action((state, position) => {\n state.connectionPosition = position;\n }),\n\n setConnectionSourceId: action((state, sourceId) => {\n state.connectionSourceId = sourceId;\n })\n};","import { createStore } from 'easy-peasy';\n\nimport actions from './actions';\n\nconst store = createStore({\n width: 0,\n height: 0,\n transform: [0, 0, 1],\n nodes: [],\n edges: [],\n selectedElements: [],\n selectedNodesBbox: { x: 0, y: 0, width: 0, height: 0 },\n\n d3Zoom: null,\n d3Selection: null,\n d3Initialised: false,\n\n nodesSelectionActive: false,\n selectionActive: false,\n selection: {},\n\n connectionSourceId: null,\n connectionPosition: { x: 0, y: 0 },\n\n onConnect: () => {},\n\n ...actions\n});\n\nexport default store;\n","export const isFunction = obj => !!(obj && obj.constructor && obj.call && obj.apply);\n\nexport const isDefined = obj => typeof obj !== 'undefined';\n\nexport const inInputDOMNode = e => e && e.target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.nodeName);\n\nexport const getDimensions = (node = {}) => ({\n width: node.offsetWidth,\n height: node.offsetHeight\n});\n","import { zoomIdentity } from 'd3-zoom';\n\nimport store from '../store';\nimport { isDefined } from './index';\n\nexport const isEdge = element => element.source && element.target;\n\nexport const isNode = element => !element.source && !element.target;\n\nexport const getOutgoers = (node, elements) => {\n if (!isNode(node)) {\n return [];\n }\n\n const outgoerIds = elements.filter(e => e.source === node.id).map(e => e.target);\n return elements.filter(e => outgoerIds.includes(e.id));\n};\n\nexport const removeElements = (elementsToRemove, elements) => {\n const nodeIdsToRemove = elementsToRemove.map(n => n.id);\n\n return elements.filter(e => {\n return (\n !nodeIdsToRemove.includes(e.id) &&\n !nodeIdsToRemove.includes(e.target) &&\n !nodeIdsToRemove.includes(e.source)\n );\n });\n};\n\nfunction getEdgeId(params) {\n return `reactflow__edge-${params.source}-${params.target}`;\n}\n\nexport const addEdge = (edgeParams, elements) => {\n if (!edgeParams.source || !edgeParams.target) {\n throw new Error('Can not create edge. An edge needs a source and a target');\n }\n\n return elements.concat({\n ...edgeParams,\n id: isDefined(edgeParams.id) ? edgeParams.id : getEdgeId(edgeParams)\n });\n}\n\nconst pointToRendererPoint = ({ x, y }, transform) => {\n const rendererX = (x - transform[0]) * (1 / [transform[2]]);\n const rendererY = (y - transform[1]) * (1 / [transform[2]]);\n\n return {\n x: rendererX,\n y: rendererY\n };\n};\n\nexport const parseElement = (e, transform) => {\n if (!e.id) {\n throw new Error('All elements (nodes and edges) need to have an id.',)\n }\n\n if (isEdge(e)) {\n return {\n ...e,\n id: e.id.toString(),\n type: e.type || 'default'\n };\n }\n\n return {\n ...e,\n id: e.id.toString(),\n type: e.type || 'default',\n __rg: {\n position: pointToRendererPoint(e.position, transform),\n width: null,\n height: null,\n handleBounds : {}\n }\n };\n};\n\nexport const getBoundingBox = (nodes) => {\n const bbox = nodes.reduce((res, node) => {\n const { position } = node.__rg;\n const x2 = position.x + node.__rg.width;\n const y2 = position.y + node.__rg.height;\n\n if (position.x < res.minX) {\n res.minX = position.x;\n }\n\n if (x2 > res.maxX) {\n res.maxX = x2;\n }\n\n if (position.y < res.minY) {\n res.minY = position.y;\n }\n\n if (y2 > res.maxY) {\n res.maxY = y2;\n }\n\n return res;\n }, {\n minX: Number.MAX_VALUE,\n minY: Number.MAX_VALUE,\n maxX: 0,\n maxY: 0\n });\n\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY\n };\n};\n\nexport const graphPosToZoomedPos = (pos, transform) => {\n return {\n x: (pos.x * transform[2]) + transform[0],\n y: (pos.y * transform[2]) + transform[1]\n };\n}\n\nexport const getNodesInside = (nodes, bbox, transform = [0, 0, 1], partially = false) => {\n return nodes.\n filter(n => {\n const bboxPos = {\n x: (bbox.x - transform[0]) * (1 / transform[2]),\n y: (bbox.y - transform[1]) * (1 / transform[2])\n };\n const bboxWidth = bbox.width * (1 / transform[2]);\n const bboxHeight = bbox.height * (1 / transform[2]);\n const { position, width, height } = n.__rg;\n const nodeWidth = partially ? -width : width;\n const nodeHeight = partially ? 0 : height;\n const offsetX = partially ? width : 0;\n const offsetY = partially ? height : 0;\n\n return (\n (position.x + offsetX > bboxPos.x && (position.x + nodeWidth) < (bboxPos.x + bboxWidth)) &&\n (position.y + offsetY > bboxPos.y && (position.y + nodeHeight) < (bboxPos.y + bboxHeight))\n );\n });\n};\n\nexport const getConnectedEdges = (nodes, edges) => {\n const nodeIds = nodes.map(n => n.id);\n\n return edges.filter(e => {\n const hasSourceHandleId = e.source.includes('__');\n const hasTargetHandleId = e.target.includes('__');\n\n const sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source;\n const targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target;\n\n return nodeIds.includes(sourceId) || nodeIds.includes(targetId);\n });\n};\n\nexport const fitView = ({ padding = 0 } = {}) => {\n const state = store.getState();\n const bounds = getBoundingBox(state.nodes);\n const maxBoundsSize = Math.max(bounds.width, bounds.height);\n const k = Math.min(state.width, state.height) / (maxBoundsSize + (maxBoundsSize * padding));\n const boundsCenterX = bounds.x + (bounds.width / 2);\n const boundsCenterY = bounds.y + (bounds.height / 2);\n const transform = [(state.width / 2) - (boundsCenterX * k), (state.height / 2) - (boundsCenterY * k)];\n const fittedTransform = zoomIdentity.translate(transform[0], transform[1]).scale(k);\n\n state.d3Selection.call(state.d3Zoom.transform, fittedTransform);\n};\n\nexport const zoomIn = () => {\n const state = store.getState();\n state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] + 0.2);\n};\n\nexport const zoomOut = () => {\n const state = store.getState();\n state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] - 0.2);\n};\n","import React, { memo } from 'react';\nimport { useStoreState } from 'easy-peasy';\n\nimport { isNode } from '../../utils/graph';\n\nfunction renderNode(d, props, state) {\n const nodeType = d.type || 'default';\n\n if (!props.nodeTypes[nodeType]) {\n console.warn(`No node type found for type \"${nodeType}\". Using fallback type \"default\".`);\n }\n\n const NodeComponent = props.nodeTypes[nodeType] || props.nodeTypes.default;\n const selected = state.selectedElements\n .filter(isNode)\n .map(e => e.id)\n .includes(d.id);\n\n return (\n \n );\n}\n\nconst NodeRenderer = memo((props) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n transform: s.transform,\n selectedElements: s.selectedElements\n }));\n\n const { transform, nodes } = state;\n const transformStyle = { transform : `translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})` };\n\n return (\n \n {nodes.map(d => renderNode(d, props, state))}\n \n );\n});\n\nNodeRenderer.displayName = 'NodeRenderer';\nNodeRenderer.whyDidYouRender = false;\n\nexport default NodeRenderer;\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React, { useEffect, useState } from 'react';\nimport cx from 'classnames';\n\nexport default (props) => {\n const [sourceNode, setSourceNode] = useState(null);\n const hasHandleId = props.connectionSourceId.includes('__');\n const sourceIdSplitted = props.connectionSourceId.split('__');\n const nodeId = sourceIdSplitted[0];\n const handleId = hasHandleId ? sourceIdSplitted[1] : null;\n\n useEffect(() => {\n setSourceNode(props.nodes.find(n => n.id === nodeId));\n }, []);\n\n if (!sourceNode) {\n return null;\n }\n\n const style = props.connectionLineStyle || {};\n const className = cx('react-flow__edge', 'connection', props.className);\n\n const sourceHandle = handleId ? sourceNode.__rg.handleBounds.source.find(d => d.id === handleId) : sourceNode.__rg.handleBounds.source[0];\n const sourceHandleX = sourceHandle ? sourceHandle.x + (sourceHandle.width / 2) : sourceNode.__rg.width / 2;\n const sourceHandleY = sourceHandle ? sourceHandle.y + (sourceHandle.height / 2) : sourceNode.__rg.height;\n const sourceX = sourceNode.__rg.position.x + sourceHandleX;\n const sourceY = sourceNode.__rg.position.y + sourceHandleY;\n\n const targetX = (props.connectionPositionX - props.transform[0]) * (1 / props.transform[2]);\n const targetY = (props.connectionPositionY - props.transform[1]) * (1 / props.transform[2]);\n\n let dAttr = '';\n\n if (props.connectionLineType === 'bezier') {\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n dAttr = `M${sourceX},${sourceY} C${sourceX},${centerY} ${targetX},${centerY} ${targetX},${targetY}`;\n } else {\n dAttr = `M${sourceX},${sourceY} ${targetX},${targetY}`;\n }\n\n return (\n \n \n \n );\n};\n","import React, { memo } from 'react';\nimport { useStoreState } from 'easy-peasy';\n\nimport ConnectionLine from '../../components/ConnectionLine';\nimport { isEdge } from '../../utils/graph';\n\nfunction getHandlePosition(position, node, handle = null) {\n if (!handle) {\n switch (position) {\n case 'top': return {\n x: node.__rg.width / 2,\n y: 0\n };\n case 'right': return {\n x: node.__rg.width,\n y: node.__rg.height / 2\n };\n case 'bottom': return {\n x: node.__rg.width / 2,\n y: node.__rg.height\n };\n case 'left': return {\n x: 0,\n y: node.__rg.height / 2\n };\n }\n }\n\n switch (position) {\n case 'top': return {\n x: handle.x + (handle.width / 2),\n y: handle.y\n };\n case 'right': return {\n x: handle.x + handle.width,\n y: handle.y + (handle.height / 2)\n };\n case 'bottom': return {\n x: handle.x + (handle.width / 2),\n y: handle.y + handle.height\n };\n case 'left': return {\n x: handle.x,\n y: handle.y + (handle.height / 2)\n };\n }\n}\n\nfunction getHandle(bounds, handleId) {\n let handle = null;\n\n if (!bounds) {\n return null;\n }\n\n // there is no handleId when there are no multiple handles/ handles with ids\n // so we just pick the first one\n if (bounds.length === 1 || !handleId) {\n handle = bounds[0];\n } else if (handleId) {\n handle = bounds.find(d => d.id === handleId);\n }\n\n return handle;\n}\n\nfunction getEdgePositions({ sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition }) {\n const sourceHandlePos = getHandlePosition(sourcePosition, sourceNode, sourceHandle)\n const sourceX = sourceNode.__rg.position.x + sourceHandlePos.x;\n const sourceY = sourceNode.__rg.position.y + sourceHandlePos.y;\n\n const targetHandlePos = getHandlePosition(targetPosition, targetNode, targetHandle);\n const targetX = targetNode.__rg.position.x + targetHandlePos.x;\n const targetY = targetNode.__rg.position.y + targetHandlePos.y;\n\n return {\n sourceX, sourceY, targetX, targetY\n };\n}\n\nfunction renderEdge(e, props, state) {\n const edgeType = e.type || 'default';\n\n const hasSourceHandleId = e.source.includes('__');\n const hasTargetHandleId = e.target.includes('__');\n\n const sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source;\n const targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target;\n\n const sourceHandleId = hasSourceHandleId ? e.source.split('__')[1] : null;\n const targetHandleId = hasTargetHandleId ? e.target.split('__')[1] : null;\n\n const sourceNode = state.nodes.find(n => n.id === sourceId);\n const targetNode = state.nodes.find(n => n.id === targetId);\n\n if (!sourceNode) {\n throw new Error(`couldn't create edge for source id: ${sourceId}`);\n }\n\n if (!targetNode) {\n throw new Error(`couldn't create edge for target id: ${targetId}`);\n }\n\n const EdgeComponent = props.edgeTypes[edgeType] || props.edgeTypes.default;\n const sourceHandle = getHandle(sourceNode.__rg.handleBounds.source, sourceHandleId);\n const targetHandle = getHandle(targetNode.__rg.handleBounds.target, targetHandleId);\n const sourcePosition = sourceHandle ? sourceHandle.position : 'bottom';\n const targetPosition = targetHandle ? targetHandle.position : 'top';\n\n const { sourceX, sourceY, targetX, targetY } = getEdgePositions({\n sourceNode, sourceHandle, sourcePosition,\n targetNode, targetHandle, targetPosition\n });\n const selected = state.selectedElements\n .filter(isEdge)\n .find(elm => elm.source === sourceId && elm.target === targetId);\n\n return (\n \n );\n}\n\nconst EdgeRenderer = memo((props) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n edges: s.edges,\n transform: s.transform,\n selectedElements: s.selectedElements,\n connectionSourceId: s.connectionSourceId,\n position: s.connectionPosition\n }));\n const {\n width, height, connectionLineStyle, connectionLineType\n } = props;\n\n if (!width) {\n return null;\n }\n\n const { transform, edges, nodes, connectionSourceId, position } = state;\n const transformStyle = `translate(${transform[0]},${transform[1]}) scale(${transform[2]})`;\n\n return (\n \n \n {edges.map(e => renderEdge(e, props, state))}\n {connectionSourceId && (\n \n )}\n \n \n );\n});\n\nEdgeRenderer.displayName = 'EdgeRenderer';\n\nexport default EdgeRenderer;\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useStoreState} from 'easy-peasy';\nimport classnames from 'classnames';\n\nconst baseStyles = {\n position: 'absolute',\n top: 0,\n left: 0,\n};\n\nconst createGridLines = (width, height, xOffset, yOffset, gap) => {\n const lineCountX = Math.ceil(width / gap) + 1;\n const lineCountY = Math.ceil(height / gap) + 1;\n\n const xValues = Array.from({length: lineCountX}, (_, i) => `M${i * gap + xOffset} 0 V${height}`);\n const yValues = Array.from({length: lineCountY}, (_, i) => `M0 ${i * gap + yOffset} H${width}`);\n\n return [...xValues, ...yValues].join(' ');\n};\n\nconst createGridDots = (width, height, xOffset, yOffset, gap, size) => {\n const lineCountX = Math.ceil(width / gap) + 1;\n const lineCountY = Math.ceil(height / gap) + 1;\n\n const values = Array.from({length: lineCountX}, (_, col) => {\n const x = col * gap + xOffset;\n return Array.from({length: lineCountY},(_,row)=>{\n const y = row * gap + yOffset;\n return `M${x} ${y-size} l${size} ${size} l${-size} ${size} l${-size} ${-size}z`\n }).join(' ');\n });\n\n return values.join(' ');\n};\n\nconst Grid = memo(({gap, color, size, style, className, backgroundType}) => {\n const {\n width,\n height,\n transform: [x, y, scale],\n } = useStoreState(s => s);\n\n const gridClasses = classnames('react-flow__grid', className);\n const scaledGap = gap * scale;\n\n const xOffset = x % scaledGap;\n const yOffset = y % scaledGap;\n const isLines = backgroundType === 'lines';\n const path = isLines\n ? createGridLines(width, height, xOffset, yOffset, scaledGap)\n : createGridDots(width, height, xOffset, yOffset, scaledGap, size);\n\n const fill = isLines ? 'none' : color;\n const stroke = isLines ? color : 'none';\n\n return (\n \n \n \n );\n});\n\nGrid.displayName = 'Grid';\n\nGrid.propTypes = {\n gap: PropTypes.number,\n color: PropTypes.string,\n size: PropTypes.number,\n style: PropTypes.object,\n className: PropTypes.string,\n backgroundType: PropTypes.oneOf(['lines', 'dots']),\n};\n\nGrid.defaultProps = {\n gap: 24,\n color: '#aaa',\n size: .5,\n style: {},\n className: null,\n backgroundType: 'dots',\n};\n\nexport default Grid;\n","import React, { memo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Grid from './Grid';\n\nconst bgComponents = {\n lines: Grid,\n dots: Grid\n};\n\nconst BackgroundRenderer = memo(({\n backgroundType, ...rest\n}) => {\n const BackgroundComponent = bgComponents[backgroundType];\n\n return (\n \n );\n});\n\nBackgroundRenderer.displayName = 'BackgroundRenderer';\n\nBackgroundRenderer.propTypes = {\n backgroundType: PropTypes.oneOf(['lines', 'dots'])\n};\n\nBackgroundRenderer.defaultProps = {\n backgroundType: 'dots'\n};\n\nexport default BackgroundRenderer;\n","import React, { useEffect, useRef, useState, memo } from 'react';\nimport { useStoreActions } from 'easy-peasy';\n\nconst initialRect = {\n startX: 0,\n startY: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n draw: false\n};\n\nfunction getMousePosition(evt) {\n const containerBounds = document.querySelector('.react-flow').getBoundingClientRect();\n\n return {\n x: evt.clientX - containerBounds.left,\n y: evt.clientY - containerBounds.top,\n };\n}\n\nexport default memo(() => {\n const selectionPane = useRef(null);\n const [rect, setRect] = useState(initialRect);\n const setSelection = useStoreActions(a => a.setSelection);\n const updateSelection = useStoreActions(a => a.updateSelection);\n const setNodesSelection = useStoreActions(a => a.setNodesSelection);\n\n useEffect(() => {\n function onMouseDown(evt) {\n const mousePos = getMousePosition(evt);\n\n setRect((currentRect) => ({\n ...currentRect,\n startX: mousePos.x,\n startY: mousePos.y,\n x: mousePos.x,\n y: mousePos.y,\n draw: true\n }));\n\n setSelection(true);\n }\n\n function onMouseMove(evt) {\n setRect((currentRect) => {\n if (!currentRect.draw) {\n return currentRect;\n }\n\n const mousePos = getMousePosition(evt);\n const negativeX = mousePos.x < currentRect.startX;\n const negativeY = mousePos.y < currentRect.startY;\n const nextRect = {\n ...currentRect,\n x: negativeX ? mousePos.x : currentRect.x,\n y: negativeY ? mousePos.y : currentRect.y,\n width: negativeX ? currentRect.startX - mousePos.x : mousePos.x - currentRect.startX,\n height: negativeY ? currentRect.startY - mousePos.y : mousePos.y - currentRect.startY,\n };\n\n updateSelection(nextRect);\n\n return nextRect;\n });\n }\n\n function onMouseUp() {\n setRect((currentRect) => {\n setNodesSelection({ isActive: true, selection: currentRect });\n setSelection(false);\n\n return {\n ...currentRect,\n draw: false\n };\n });\n }\n\n selectionPane.current.addEventListener('mousedown', onMouseDown);\n selectionPane.current.addEventListener('mousemove', onMouseMove);\n selectionPane.current.addEventListener('mouseup', onMouseUp);\n\n return () => {\n selectionPane.current.removeEventListener('mousedown', onMouseDown);\n selectionPane.current.removeEventListener('mousemove', onMouseMove);\n selectionPane.current.removeEventListener('mouseup', onMouseUp);\n };\n }, []);\n\n return (\n \n {(rect.draw || rect.fixed) && (\n \n )}\n \n );\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findInArray = findInArray;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\nexports.int = int;\nexports.dontSetMe = dontSetMe;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPrefix = getPrefix;\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix(prop\n/*: string*/\n= 'transform')\n/*: string*/\n{\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n const style = window.document.documentElement.style;\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n let out = '';\n let shouldCapitalize = true;\n\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n\n return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = getPrefix();\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.addEvent = addEvent;\nexports.removeEvent = removeEvent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTranslation = getTranslation;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nexports.styleHacks = styleHacks;\nexports.addClassName = addClassName;\nexports.removeClassName = removeClassName;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nlet matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n } // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n\n\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n let node = el;\n\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n} // Get from offsetParent\n\n\nfunction offsetXYFromParent(evt\n/*: {clientX: number, clientY: number}*/\n, offsetParent\n/*: HTMLElement*/\n)\n/*: ControlPosition*/\n{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n return {\n x,\n y\n };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\n\nfunction getTranslation({\n x,\n y\n}\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n let translation = `translate(${x}${unitSuffix},${y}${unitSuffix})`;\n\n if (positionOffset) {\n const defaultX = `${typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix}`;\n const defaultY = `${typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix}`;\n translation = `translate(${defaultX}, ${defaultY})` + translation;\n }\n\n return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n }\n } catch (e) {// probably IE\n }\n}\n\nfunction styleHacks(childStyle\n/*: Object*/\n= {})\n/*: Object*/\n{\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBoundPosition = getBoundPosition;\nexports.snapToGrid = snapToGrid;\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.getControlPosition = getControlPosition;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\n\nvar _shims = require(\"./shims\");\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./domFns\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n } // Keep x and y below right and bottom limits...\n\n\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n const node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent);\n} // Create an data object exposed by 's events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n const state = draggable.state;\n const isStart = !(0, _shims.isNum)(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX,\n deltaY: y - state.lastY,\n lastX: state.lastX,\n lastY: state.lastY,\n x,\n y\n };\n }\n} // Create an data exposed by 's events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n const scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n const node = _reactDom.default.findDOMNode(draggable);\n\n if (!node) {\n throw new Error(': Unmounted during event!');\n } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log(...args) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n}; // Default to mouse events.\n\nlet dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};*/\n\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};*/\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nclass DraggableCore extends _react.default.Component {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN,\n lastY: NaN,\n touchIdentifier: null\n });\n\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e); // Only accept left-clicks.\n\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n\n const {\n ownerDocument\n } = thisNode; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n return;\n } // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n\n\n const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.setState({\n touchIdentifier\n }); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n\n const {\n x,\n y\n } = position; // Create an event object with all the data parents need to make a decision here.\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return; // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n\n this.setState({\n dragging: true,\n lastX: x,\n lastY: y\n }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n\n _defineProperty(this, \"handleDrag\", e => {\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault(); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position; // Snap to grid if prop has been provided\n\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX,\n deltaY = y - this.state.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents')\n /*: any*/\n )\n /*: MouseTouchEvent*/\n ); // I see why this insanity was deprecated\n // $FlowIgnore\n\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n });\n\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.state.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {\n x,\n y\n } = position;\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n }); // Call event handler\n\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n });\n\n _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n\n _defineProperty(this, \"onTouchStart\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onTouchEnd\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStop(e);\n });\n }\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return _react.default.cloneElement(_react.default.Children.only(this.props.children), {\n style: (0, _domFns.styleHacks)(this.props.children.props.style),\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n\n}\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props\n /*: DraggableCoreProps*/\n , propName\n /*: $Keys*/\n ) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {}\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Define \n//\nclass Draggable extends _react.default.Component {\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps({\n position\n }\n /*: DraggableProps*/\n , {\n prevPropsPosition\n }\n /*: DraggableState*/\n ) {\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: { ...position\n }\n };\n }\n\n return null;\n }\n\n constructor(props\n /*: DraggableProps*/\n ) {\n super(props);\n\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState\n /*: $Shape*/\n = {\n x: uiData.x,\n y: uiData.y\n }; // Keep within bounds.\n\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n newState.x += this.state.slackX;\n newState.y += this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n } // Short-circuit if user's callback killed it.\n\n\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n const shouldStop = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldStop === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState\n /*: $Shape*/\n = {\n dragging: false,\n slackX: 0,\n slackY: 0\n }; // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n const controlled = Boolean(this.props.position);\n\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n });\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: { ...props.position\n },\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && _reactDom.default.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n\n componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\n\n render()\n /*: ReactElement*/\n {\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n }; // If this element was SVG, we use the `transform` attribute.\n\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n } // Mark with class while dragging\n\n\n const className = (0, _classnames.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n }); // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n return _react.default.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), _react.default.cloneElement(_react.default.Children.only(children), {\n className: className,\n style: { ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n\n}\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", { // Accepts all props accepts.\n ..._DraggableCore.default.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(Draggable, \"defaultProps\", { ..._DraggableCore.default.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n position: null,\n scale: 1\n});","var Draggable = require('./build/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./build/DraggableCore').default;\n","import React, { useState, memo } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport { isNode } from '../../utils/graph';\n\nfunction getStartPositions(elements) {\n return elements\n .filter(isNode)\n .reduce((res, node) => {\n const startPosition = {\n x: node.__rg.position.x || node.position.x,\n y: node.__rg.position.y || node.position.x\n };\n\n res[node.id] = startPosition;\n\n return res;\n }, {});\n}\n\nexport default memo(() => {\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [startPositions, setStartPositions] = useState({});\n const state = useStoreState(s => ({\n transform: s.transform,\n selectedNodesBbox: s.selectedNodesBbox,\n selectedElements: s.selectedElements\n }));\n const updateNodePos = useStoreActions(a => a.updateNodePos);\n const [x, y, k] = state.transform;\n const position = state.selectedNodesBbox;\n\n const onStart = (evt) => {\n const scaledClient = {\n x: evt.clientX * (1 / k),\n y: evt.clientY * (1 / k)\n };\n const offsetX = scaledClient.x - position.x - x;\n const offsetY = scaledClient.y - position.y - y;\n const startPositions = getStartPositions(state.selectedElements);\n\n setOffset({ x: offsetX, y: offsetY });\n setStartPositions(startPositions);\n };\n\n const onDrag = (evt) => {\n const scaledClient = {\n x: evt.clientX * (1 / k),\n y: evt.clientY * (1 / k)\n };\n\n state.selectedElements.filter(isNode).forEach(node => {\n updateNodePos({ id: node.id, pos: {\n x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - x ,\n y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - y\n }});\n });\n };\n\n return (\n \n \n \n \n \n );\n});\n","import { useState, useEffect } from 'react';\n\nimport { inInputDOMNode } from '../utils';\n\nexport default function useKeyPress(keyCode) {\n const [keyPressed, setKeyPressed] = useState(false);\n\n function downHandler(evt) {\n if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) {\n setKeyPressed(true);\n }\n }\n\n const upHandler = (evt) => {\n if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) {\n setKeyPressed(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', downHandler);\n window.addEventListener('keyup', upHandler);\n return () => {\n window.removeEventListener('keydown', downHandler);\n window.removeEventListener('keyup', upHandler);\n };\n }, []);\n\n return keyPressed;\n}\n","import { useEffect } from 'react';\nimport * as d3Zoom from 'd3-zoom';\nimport { select, event } from 'd3-selection';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nconst d3ZoomInstance = d3Zoom\n .zoom()\n .scaleExtent([0.5, 2])\n .filter(() => !event.button);\n\nexport default function useD3Zoom(zoomPane, onMove, shiftPressed) {\n const state = useStoreState(s => ({\n transform: s.transform,\n d3Selection: s.d3Selection,\n d3Zoom: s.d3Zoom,\n edges: s.edged,\n d3Initialised: s.d3Initialised,\n nodesSelectionActive: s.nodesSelectionActive\n }));\n\n const initD3 = useStoreActions(actions => actions.initD3);\n const updateTransform = useStoreActions(actions => actions.updateTransform);\n\n useEffect(() => {\n const selection = select(zoomPane.current).call(d3ZoomInstance);\n initD3({ zoom: d3ZoomInstance, selection });\n }, []);\n\n useEffect(() => {\n if (shiftPressed) {\n d3ZoomInstance.on('zoom', null);\n } else {\n d3ZoomInstance.on('zoom', () => {\n if (event.sourceEvent && event.sourceEvent.target !== zoomPane.current) {\n return false;\n }\n\n updateTransform(event.transform);\n\n onMove();\n });\n\n if (state.d3Selection) {\n // we need to restore the graph transform otherwise d3 zoom transform and graph transform are not synced\n const graphTransform = d3Zoom.zoomIdentity\n .translate(state.transform[0], state.transform[1])\n .scale(state.transform[2]);\n\n state.d3Selection.call(state.d3Zoom.transform, graphTransform);\n }\n }\n\n return () => {\n d3ZoomInstance.on('zoom', null);\n };\n }, [shiftPressed]);\n}\n","import { useEffect } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport useKeyPress from './useKeyPress';\nimport { isEdge, getConnectedEdges } from '../utils/graph';\n\nexport default ({ deleteKeyCode, onElementsRemove }) => {\n const state = useStoreState(s => ({ selectedElements: s.selectedElements, edges: s.edges }))\n const setNodesSelection = useStoreActions(a => a.setNodesSelection);\n const deleteKeyPressed = useKeyPress(deleteKeyCode);\n\n useEffect(() => {\n if (deleteKeyPressed && state.selectedElements.length) {\n let elementsToRemove = state.selectedElements;\n\n // we also want to remove the edges if only one node is selected\n if (state.selectedElements.length === 1 && !isEdge(state.selectedElements[0])) {\n const connectedEdges = getConnectedEdges(state.selectedElements, state.edges);\n elementsToRemove = [...state.selectedElements, ...connectedEdges];\n }\n\n onElementsRemove(elementsToRemove);\n setNodesSelection({ isActive: false });\n }\n }, [deleteKeyPressed])\n\n return null;\n};\n","import { useEffect } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\nimport isEqual from 'fast-deep-equal';\n\nimport { parseElement, isNode, isEdge } from '../utils/graph';\n\nconst useElementUpdater = ({ elements }) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n edges: s.edges,\n transform: s.transform\n }));\n\n const setNodes = useStoreActions(a => a.setNodes);\n const setEdges = useStoreActions(a => a.setEdges);\n\n useEffect(() => {\n const nodes = elements.filter(isNode);\n const edges = elements.filter(isEdge).map(parseElement);\n\n const nextNodes = nodes.map(propNode => {\n const existingNode = state.nodes.find(n => n.id === propNode.id);\n\n if (existingNode) {\n const data = !isEqual(existingNode.data, propNode.data) ?\n { ...existingNode.data, ...propNode.data } : existingNode.data;\n\n return {\n ...existingNode,\n data\n };\n }\n\n return parseElement(propNode, state.transform);\n });\n\n const nodesChanged = !isEqual(state.nodes, nextNodes);\n const edgesChanged = !isEqual(state.edges, edges);\n\n if (nodesChanged) {\n setNodes(nextNodes);\n }\n\n if (edgesChanged) {\n setEdges(edges);\n }\n });\n\n return null;\n};\n\nexport default useElementUpdater;\n","import React, { useEffect, useRef, memo } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport NodeRenderer from '../NodeRenderer';\nimport EdgeRenderer from '../EdgeRenderer';\nimport BackgroundRenderer from '../BackgroundRenderer';\nimport UserSelection from '../../components/UserSelection';\nimport NodesSelection from '../../components/NodesSelection';\nimport useKeyPress from '../../hooks/useKeyPress';\nimport useD3Zoom from '../../hooks/useD3Zoom';\nimport useGlobalKeyHandler from '../../hooks/useGlobalKeyHandler';\nimport useElementUpdater from '../../hooks/useElementUpdater'\nimport { getDimensions } from '../../utils';\nimport { fitView, zoomIn, zoomOut } from '../../utils/graph';\n\nconst GraphView = memo(({\n nodeTypes, edgeTypes, onMove, onLoad,\n onElementClick, onNodeDragStop, connectionLineType, connectionLineStyle,\n selectionKeyCode, onElementsRemove, deleteKeyCode, elements,\n showBackground, backgroundGap, backgroundColor, backgroundType,\n onConnect\n}) => {\n const zoomPane = useRef();\n const rendererNode = useRef();\n const state = useStoreState(s => ({\n width: s.width,\n height: s.height,\n nodes: s.nodes,\n edges: s.edges,\n d3Initialised: s.d3Initialised,\n nodesSelectionActive: s.nodesSelectionActive\n }));\n const updateSize = useStoreActions(actions => actions.updateSize);\n const setNodesSelection = useStoreActions(actions => actions.setNodesSelection);\n const setOnConnect = useStoreActions(a => a.setOnConnect);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n\n const onZoomPaneClick = () => setNodesSelection({ isActive: false });\n\n const updateDimensions = () => {\n const size = getDimensions(rendererNode.current);\n updateSize(size);\n };\n\n useEffect(() => {\n updateDimensions();\n setOnConnect(onConnect);\n window.onresize = updateDimensions;\n\n return () => {\n window.onresize = null;\n };\n }, []);\n\n useD3Zoom(zoomPane, onMove, selectionKeyPressed);\n\n useEffect(() => {\n if (state.d3Initialised) {\n onLoad({\n fitView,\n zoomIn,\n zoomOut\n });\n }\n }, [state.d3Initialised]);\n\n useGlobalKeyHandler({ onElementsRemove, deleteKeyCode });\n useElementUpdater({ elements });\n\n return (\n
\n {showBackground && (\n \n )}\n \n \n {selectionKeyPressed && }\n {state.nodesSelectionActive && }\n \n
\n );\n});\n\nGraphView.displayName = 'GraphView';\n\nexport default GraphView;\n","import React, { memo } from 'react';\nimport cx from 'classnames';\n\nfunction onMouseDown(evt, { nodeId, setSourceId, setPosition, onConnect, isTarget, isValidConnection }) {\n const containerBounds = document.querySelector('.react-flow').getBoundingClientRect();\n let recentHoveredHandle = null;\n\n setPosition({\n x: evt.clientX - containerBounds.x,\n y: evt.clientY - containerBounds.y,\n });\n setSourceId(nodeId);\n\n function resetRecentHandle() {\n if (recentHoveredHandle) {\n recentHoveredHandle.classList.remove('valid');\n recentHoveredHandle.classList.remove('connecting');\n }\n }\n\n // checks if element below mouse is a handle and returns connection in form of an object { source: 123, target: 312 }\n function checkElementBelowIsValid(evt) {\n const elementBelow = document.elementFromPoint(evt.clientX, evt.clientY);\n const result = {\n elementBelow,\n isValid: false,\n connection: null,\n isHoveringHandle: false\n };\n\n if (elementBelow && (elementBelow.classList.contains('target') || elementBelow.classList.contains('source'))) {\n let connection = null;\n\n if (isTarget) {\n const sourceId = elementBelow.getAttribute('data-nodeid');\n connection = { source: sourceId, target: nodeId };\n } else {\n const targetId = elementBelow.getAttribute('data-nodeid');\n connection = { source: nodeId, target: targetId };\n }\n\n const isValid = isValidConnection(connection);\n\n result.connection = connection;\n result.isValid = isValid;\n result.isHoveringHandle = true;\n }\n\n return result;\n }\n\n function onMouseMove(evt) {\n setPosition({\n x: evt.clientX - containerBounds.x,\n y: evt.clientY - containerBounds.y,\n });\n\n const { connection, elementBelow, isValid, isHoveringHandle } = checkElementBelowIsValid(evt);\n\n if (!isHoveringHandle) {\n return resetRecentHandle();\n }\n\n const isOwnHandle = connection.source === connection.target;\n\n if (!isOwnHandle) {\n recentHoveredHandle = elementBelow;\n elementBelow.classList.add('connecting');\n elementBelow.classList.toggle('valid', isValid);\n }\n }\n\n function onMouseUp(evt) {\n const { connection, isValid } = checkElementBelowIsValid(evt);\n\n if (isValid) {\n onConnect(connection);\n }\n\n resetRecentHandle();\n setSourceId(null);\n\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n }\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp)\n}\n\nconst BaseHandle = memo(({\n type, nodeId, onConnect, position,\n setSourceId, setPosition, className,\n id = false, isValidConnection, ...rest\n}) => {\n const isTarget = type === 'target';\n const handleClasses = cx(\n 'react-flow__handle',\n className,\n position,\n { source: !isTarget, target: isTarget }\n );\n\n const nodeIdWithHandleId = id ? `${nodeId}__${id}` : nodeId;\n\n return (\n onMouseDown(evt, {\n nodeId: nodeIdWithHandleId, setSourceId, setPosition,\n onConnect, isTarget, isValidConnection\n })}\n {...rest}\n />\n );\n});\n\nBaseHandle.displayName = 'BaseHandle';\nBaseHandle.whyDidYouRender = false;\n\nexport default BaseHandle;\n","import { createContext } from 'react';\n\nexport const NodeIdContext = createContext(null);\nexport const Provider = NodeIdContext.Provider;\nexport const Consumer = NodeIdContext.Consumer;\n\nProvider.displayName = 'NodeIdProvider';\n\nexport default NodeIdContext;\n","import React, { memo, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { useStoreActions, useStoreState } from 'easy-peasy';\n\nimport BaseHandle from './BaseHandle';\nimport NodeIdContext from '../../contexts/NodeIdContext'\n\nconst Handle = memo(({ onConnect, ...rest }) => {\n const nodeId = useContext(NodeIdContext);\n const { setPosition, setSourceId } = useStoreActions(a => ({\n setPosition: a.setConnectionPosition,\n setSourceId: a.setConnectionSourceId\n }));\n const onConnectAction = useStoreState(s => s.onConnect);\n const onConnectExtended = (params) => {\n onConnectAction(params);\n onConnect(params);\n };\n\n return (\n \n );\n});\n\nHandle.displayName = 'Handle';\n\nHandle.propTypes = {\n type: PropTypes.oneOf(['source', 'target']),\n position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n onConnect: PropTypes.func,\n isValidConnection: PropTypes.func\n};\n\nHandle.defaultProps = {\n type: 'source',\n position: 'top',\n onConnect: () => {},\n isValidConnection: () => true\n};\n\nexport default Handle;\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#ff6060',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n \n {data.label}\n \n
\n);\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#9999ff',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n {data.label}\n \n
\n);\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#55dd99',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n \n {data.label}\n
\n);\n","import React, { useEffect, useRef, useState, memo } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport cx from 'classnames';\n\nimport { getDimensions, inInputDOMNode } from '../../utils';\nimport { Provider } from '../../contexts/NodeIdContext';\nimport store from '../../store';\n\nconst isHandle = e => (\n e.target.className &&\n e.target.className.includes &&\n (e.target.className.includes('source') || e.target.className.includes('target'))\n);\n\nconst hasResizeObserver = !!window.ResizeObserver;\n\nconst getHandleBounds = (sel, nodeElement, parentBounds, k) => {\n const handles = nodeElement.querySelectorAll(sel);\n\n if (!handles || !handles.length) {\n return null;\n }\n\n return [].map.call(handles, (handle) => {\n const bounds = handle.getBoundingClientRect();\n const dimensions = getDimensions(handle);\n const nodeIdAttr = handle.getAttribute('data-nodeid');\n const handlePosition = handle.getAttribute('data-handlepos');\n const nodeIdSplitted = nodeIdAttr.split('__');\n\n let handleId = null;\n\n if (nodeIdSplitted) {\n handleId = nodeIdSplitted.length ? nodeIdSplitted[1] : nodeIdSplitted;\n }\n\n return {\n id: handleId,\n position: handlePosition,\n x: (bounds.x - parentBounds.x) * (1 / k),\n y: (bounds.y - parentBounds.y) * (1 / k),\n ...dimensions\n };\n });\n};\n\nconst onStart = (evt, { setOffset, onClick, id, type, data, position, transform }) => {\n if (inInputDOMNode(evt) || isHandle(evt)) {\n return false;\n }\n\n const scaledClient = {\n x: evt.clientX * (1 / [transform[2]]),\n y: evt.clientY * (1 / [transform[2]])\n };\n const offsetX = scaledClient.x - position.x - transform[0];\n const offsetY = scaledClient.y - position.y - transform[1];\n const node = { id, type, position, data };\n\n store.dispatch.setSelectedElements({ id, type });\n setOffset({ x: offsetX, y: offsetY });\n onClick(node);\n};\n\nconst onDrag = (evt, { setDragging, id, offset, transform }) => {\n const scaledClient = {\n x: evt.clientX * (1 / transform[2]),\n y: evt.clientY * (1 / transform[2])\n };\n\n setDragging(true);\n store.dispatch.updateNodePos({ id, pos: {\n x: scaledClient.x - transform[0] - offset.x,\n y: scaledClient.y - transform[1] - offset.y\n }});\n};\n\nconst onStop = ({ onNodeDragStop, setDragging, isDragging, id, type, position, data }) => {\n if (!isDragging) {\n return false;\n }\n\n setDragging(false);\n onNodeDragStop({\n id, type, position, data\n });\n};\n\nexport default NodeComponent => {\n const NodeWrapper = memo((props) => {\n const nodeElement = useRef(null);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [isDragging, setDragging] = useState(false);\n const {\n id, type, data, transform, xPos, yPos, selected,\n onClick, onNodeDragStop, style\n } = props;\n\n const position = { x: xPos, y: yPos };\n const nodeClasses = cx('react-flow__node', { selected });\n const nodeStyle = { zIndex: selected ? 10 : 3, transform: `translate(${xPos}px,${yPos}px)` };\n\n const updateNode = () => {\n const storeState = store.getState()\n const bounds = nodeElement.current.getBoundingClientRect();\n const dimensions = getDimensions(nodeElement.current);\n const handleBounds = {\n source: getHandleBounds('.source', nodeElement.current, bounds, storeState.transform[2]),\n target: getHandleBounds('.target', nodeElement.current, bounds, storeState.transform[2])\n };\n store.dispatch.updateNodeData({ id, ...dimensions, handleBounds });\n }\n\n useEffect(() => {\n updateNode();\n\n let resizeObserver = null;\n\n if (hasResizeObserver) {\n resizeObserver = new ResizeObserver(entries => {\n for (let entry of entries) {\n updateNode();\n }\n });\n\n resizeObserver.observe(nodeElement.current);\n }\n\n return () => {\n if (hasResizeObserver && resizeObserver) {\n resizeObserver.unobserve(nodeElement.current);\n }\n }\n }, []);\n\n return (\n onStart(evt, { onClick, id, type, data, setOffset, transform, position })}\n onDrag={evt => onDrag(evt, { setDragging, id, offset, transform })}\n onStop={() => onStop({ onNodeDragStop, isDragging, setDragging, id, type, position, data })}\n scale={transform[2]}\n >\n \n \n \n \n \n \n );\n });\n\n NodeWrapper.displayName = 'NodeWrapper';\n NodeWrapper.whyDidYouRender = false;\n\n return NodeWrapper;\n};\n","import DefaultNode from '../../components/Nodes/DefaultNode';\nimport InputNode from '../../components/Nodes/InputNode';\nimport OutputNode from '../../components/Nodes/OutputNode';\nimport wrapNode from '../../components/Nodes/wrapNode';\n\nexport function createNodeTypes(nodeTypes) {\n const standardTypes = {\n input: wrapNode(nodeTypes.input || InputNode),\n default: wrapNode(nodeTypes.default || DefaultNode),\n output: wrapNode(nodeTypes.output || OutputNode)\n };\n\n const specialTypes = Object\n .keys(nodeTypes)\n .filter(k => !['input', 'default', 'output'].includes(k))\n .reduce((res, key) => {\n res[key] = wrapNode(nodeTypes[key] || DefaultNode);\n\n return res;\n }, {});\n\n return {\n ...standardTypes,\n ...specialTypes\n };\n}\n","import React, { memo } from 'react';\n\nexport default memo(({\n sourceX, sourceY, targetX, targetY,\n sourcePosition, targetPosition, style = {}\n}) => {\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n let dAttr = `M${sourceX},${sourceY} C${sourceX},${centerY} ${targetX},${centerY} ${targetX},${targetY}`;\n\n if (['left', 'right'].includes(sourcePosition) && ['left', 'right'].includes(targetPosition)) {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n\n dAttr = `M${sourceX},${sourceY} C${centerX},${sourceY} ${centerX},${targetY} ${targetX},${targetY}`;\n } else if (['left', 'right'].includes(sourcePosition) || ['left', 'right'].includes(targetPosition)) {\n dAttr = `M${sourceX},${sourceY} C${sourceX},${targetY} ${sourceX},${targetY} ${targetX},${targetY}`;\n }\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\n\nexport default memo((props) => {\n const {\n sourceX, sourceY, targetX, targetY, style = {}\n } = props;\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\n\nexport default memo((props) => {\n const {\n sourceX, sourceY, targetX, targetY, style = {}\n } = props;\n\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\nimport cx from 'classnames';\n\nimport { inInputDOMNode } from '../../utils';\nimport store from '../../store';\n\nexport default EdgeComponent => {\n const EdgeWrapper = memo((props) => {\n const {\n id, source, target, type,\n animated, selected, onClick\n } = props;\n const edgeClasses = cx('react-flow__edge', { selected, animated });\n const onEdgeClick = (evt) => {\n if (inInputDOMNode(evt)) {\n return false;\n }\n\n store.dispatch.setSelectedElements({ id, source, target });\n onClick({ id, source, target, type });\n };\n\n return (\n \n \n \n );\n });\n\n EdgeWrapper.displayName = 'EdgeWrapper';\n EdgeWrapper.whyDidYouRender = false;\n\n return EdgeWrapper;\n};\n","import StraightEdge from '../../components/Edges/StraightEdge';\nimport BezierEdge from '../../components/Edges/BezierEdge';\nimport wrapEdge from '../../components/Edges/wrapEdge';\n\nexport function createEdgeTypes(edgeTypes) {\n const standardTypes = {\n default: wrapEdge(edgeTypes.default || BezierEdge),\n straight: wrapEdge(edgeTypes.bezier || StraightEdge)\n };\n\n const specialTypes = Object\n .keys(edgeTypes)\n .filter(k => !['default', 'bezier'].includes(k))\n .reduce((res, key) => {\n res[key] = wrapEdge(edgeTypes[key] ||BezierEdge);\n\n return res;\n }, {});\n\n return {\n ...standardTypes,\n ...specialTypes\n };\n}\n","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","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { StoreProvider } from 'easy-peasy';\n\nif (process.env.NODE_ENV !== 'production') {\n const whyDidYouRender = require('@welldone-software/why-did-you-render');\n whyDidYouRender(React);\n}\n\nimport GraphView from '../GraphView';\nimport DefaultNode from '../../components/Nodes/DefaultNode';\nimport InputNode from '../../components/Nodes/InputNode';\nimport OutputNode from '../../components/Nodes/OutputNode';\nimport { createNodeTypes } from '../NodeRenderer/utils';\nimport BezierEdge from '../../components/Edges/BezierEdge';\nimport StraightEdge from '../../components/Edges/StraightEdge';\nimport StepEdge from '../../components/Edges/StepEdge';\nimport { createEdgeTypes } from '../EdgeRenderer/utils';\nimport store from '../../store';\n\nimport '../../style.css';\n\nconst ReactFlow = ({\n style, onElementClick, elements, children,\n nodeTypes, edgeTypes, onLoad, onMove,\n onElementsRemove, onConnect, onNodeDragStop, connectionLineType,\n connectionLineStyle, deleteKeyCode, selectionKeyCode,\n showBackground, backgroundGap, backgroundType, backgroundColor\n}) => {\n const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []);\n const edgeTypesParsed = useMemo(() => createEdgeTypes(edgeTypes), []);\n\n return (\n
\n \n \n {children}\n \n
\n );\n};\n\nReactFlow.displayName = 'ReactFlow';\n\nReactFlow.propTypes = {\n onElementClick: PropTypes.func,\n onElementsRemove: PropTypes.func,\n onNodeDragStop: PropTypes.func,\n onConnect: PropTypes.func,\n\tonLoad: PropTypes.func,\n onMove: PropTypes.func,\n nodeTypes: PropTypes.object,\n edgeTypes: PropTypes.object,\n connectionLineType: PropTypes.string,\n connectionLineStyle: PropTypes.object,\n deleteKeyCode: PropTypes.number,\n selectionKeyCode: PropTypes.number,\n gridColor: PropTypes.string,\n gridGap: PropTypes.number,\n showBackground: PropTypes.bool,\n backgroundType: PropTypes.oneOf(['lines', 'dots'])\n};\n\nReactFlow.defaultProps = {\n onElementClick: () => {},\n onElementsRemove: () => {},\n onNodeDragStop: () => {},\n onConnect: () => {},\n\tonLoad: () => {},\n onMove: () => {},\n nodeTypes: {\n input: InputNode,\n default: DefaultNode,\n output: OutputNode\n },\n edgeTypes: {\n default: BezierEdge,\n straight: StraightEdge,\n step: StepEdge\n },\n connectionLineType: 'bezier',\n connectionLineStyle: {},\n deleteKeyCode: 8,\n selectionKeyCode: 16,\n backgroundColor: '#eee',\n backgroundGap: 24,\n showBackground: true,\n backgroundType: 'dots'\n};\n\nexport default ReactFlow;\n","import React, { useRef, useEffect } from 'react';\nimport { useStoreState } from 'easy-peasy';\nimport classnames from 'classnames';\n\nimport { isFunction } from '../../utils'\nimport { getNodesInside } from '../../utils/graph';\n\nconst baseStyle = {\n position: 'absolute',\n zIndex: 5,\n bottom: 10,\n right: 10,\n width: 200\n};\n\nexport default ({ style = {}, className, bgColor = '#f8f8f8', nodeColor = '#ddd' }) => {\n const canvasNode = useRef(null);\n const state = useStoreState(s => ({\n width: s.width,\n height: s.height,\n nodes: s.nodes,\n transform: s.transform,\n })); const mapClasses = classnames('react-flow__minimap', className);\n const nodePositions = state.nodes.map(n => n.__rg.position);\n const width = style.width || baseStyle.width;\n const height = (state.height / (state.width || 1)) * width;\n const bbox = { x: 0, y: 0, width: state.width, height: state.height };\n const scaleFactor = width / state.width;\n const nodeColorFunc = isFunction(nodeColor) ? nodeColor : () => nodeColor;\n\n useEffect(() => {\n if (canvasNode) {\n const ctx = canvasNode.current.getContext('2d');\n const nodesInside = getNodesInside(state.nodes, bbox, state.transform, true);\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, width, height);\n\n nodesInside.forEach((n) => {\n const pos = n.__rg.position;\n const transformX = state.transform[0];\n const transformY = state.transform[1];\n const x = (pos.x * state.transform[2]) + transformX;\n const y = (pos.y * state.transform[2]) + transformY;\n\n ctx.fillStyle = nodeColorFunc(n);\n\n ctx.fillRect(\n (x * scaleFactor),\n (y * scaleFactor),\n n.__rg.width * scaleFactor * state.transform[2],\n n.__rg.height * scaleFactor * state.transform[2]\n );\n });\n }\n }, [nodePositions, state.transform, height])\n\n return (\n \n );\n}\n","import React from 'react';\nimport classnames from 'classnames';\n\nimport { fitView, zoomIn, zoomOut } from '../../utils/graph';\nimport PlusIcon from '../../../assets/icons/plus.svg';\nimport MinusIcon from '../../../assets/icons/minus.svg';\nimport FitviewIcon from '../../../assets/icons/fitview.svg';\n\nconst baseStyle = {\n position: 'absolute',\n zIndex: 5,\n bottom: 10,\n left: 10,\n};\n\nexport default ({ style, className }) => {\n const mapClasses = classnames('react-flow__controls', className);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n"],"names":["ReactPropTypesSecret","require$$0","ponyfill","$$observable","ownKeys","MapOrSimilar","get","set","createStore","reduxThunk","createStore$1","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","setOnConnect","action","state","onConnect","setNodes","nodes","setEdges","edges","updateNodeData","id","data","forEach","n","__rg","updateNodePos","pos","position","setSelection","isActive","selectionActive","setNodesSelection","selection","nodesSelectionActive","selectedElements","selectedNodes","getNodesInside","transform","selectedNodesBbox","getBoundingBox","setSelectedElements","elements","selectedElementsArr","Array","isArray","selectedElementsUpdated","isEqual","updateSelection","selectedEdges","getConnectedEdges","nextSelectedElements","updateTransform","x","y","k","updateSize","size","width","height","initD3","zoom","d3Zoom","d3Selection","d3Initialised","setConnectionPosition","connectionPosition","setConnectionSourceId","sourceId","connectionSourceId","store","actions","isFunction","obj","constructor","call","apply","isDefined","inInputDOMNode","e","target","includes","nodeName","getDimensions","node","offsetWidth","offsetHeight","isEdge","element","source","isNode","getOutgoers","outgoerIds","filter","map","removeElements","elementsToRemove","nodeIdsToRemove","getEdgeId","params","addEdge","edgeParams","Error","concat","pointToRendererPoint","rendererX","rendererY","parseElement","toString","type","handleBounds","bbox","reduce","res","x2","y2","minX","maxX","minY","maxY","Number","MAX_VALUE","partially","bboxPos","bboxWidth","bboxHeight","nodeWidth","nodeHeight","offsetX","offsetY","nodeIds","hasSourceHandleId","hasTargetHandleId","split","targetId","fitView","padding","getState","bounds","maxBoundsSize","Math","max","min","boundsCenterX","boundsCenterY","fittedTransform","zoomIdentity","translate","scale","zoomIn","scaleTo","zoomOut","renderNode","d","props","nodeType","nodeTypes","console","warn","NodeComponent","selected","onElementClick","onNodeDragStop","NodeRenderer","memo","useStoreState","s","transformStyle","displayName","whyDidYouRender","useState","sourceNode","setSourceNode","hasHandleId","sourceIdSplitted","nodeId","handleId","useEffect","find","connectionLineStyle","className","cx","sourceHandle","sourceHandleX","sourceHandleY","sourceX","sourceY","targetX","connectionPositionX","targetY","connectionPositionY","dAttr","connectionLineType","yOffset","abs","centerY","getHandlePosition","handle","getHandle","length","getEdgePositions","sourcePosition","targetNode","targetHandle","targetPosition","sourceHandlePos","targetHandlePos","renderEdge","edgeType","sourceHandleId","targetHandleId","EdgeComponent","edgeTypes","elm","animated","EdgeRenderer","baseStyles","top","left","createGridLines","xOffset","gap","lineCountX","ceil","lineCountY","xValues","from","_","i","yValues","join","createGridDots","values","col","row","Grid","color","backgroundType","gridClasses","classnames","scaledGap","isLines","path","fill","stroke","propTypes","PropTypes","string","object","oneOf","defaultProps","bgComponents","lines","dots","BackgroundRenderer","rest","BackgroundComponent","initialRect","startX","startY","draw","getMousePosition","evt","containerBounds","document","querySelector","getBoundingClientRect","clientX","clientY","selectionPane","useRef","rect","setRect","useStoreActions","a","onMouseDown","mousePos","currentRect","onMouseMove","negativeX","negativeY","nextRect","onMouseUp","current","addEventListener","removeEventListener","fixed","_shims","_domFns","require$$1","require$$2","require$$3","_positionFns","require$$4","require$$5","getStartPositions","startPosition","offset","setOffset","startPositions","setStartPositions","onStart","scaledClient","onDrag","ReactDraggable","useKeyPress","keyCode","keyPressed","setKeyPressed","downHandler","upHandler","window","d3ZoomInstance","scaleExtent","event","button","useD3Zoom","zoomPane","onMove","shiftPressed","edged","select","on","sourceEvent","graphTransform","deleteKeyCode","onElementsRemove","deleteKeyPressed","connectedEdges","useElementUpdater","nextNodes","propNode","existingNode","nodesChanged","edgesChanged","GraphView","onLoad","selectionKeyCode","showBackground","backgroundGap","backgroundColor","rendererNode","selectionKeyPressed","onZoomPaneClick","updateDimensions","onresize","useGlobalKeyHandler","setSourceId","setPosition","isTarget","isValidConnection","recentHoveredHandle","resetRecentHandle","classList","remove","checkElementBelowIsValid","elementBelow","elementFromPoint","result","isValid","connection","isHoveringHandle","contains","getAttribute","isOwnHandle","add","toggle","BaseHandle","handleClasses","nodeIdWithHandleId","NodeIdContext","createContext","Provider","Consumer","Handle","useContext","onConnectAction","onConnectExtended","func","nodeStyles","background","borderRadius","label","isHandle","hasResizeObserver","ResizeObserver","getHandleBounds","sel","nodeElement","parentBounds","handles","querySelectorAll","dimensions","nodeIdAttr","handlePosition","nodeIdSplitted","onClick","dispatch","setDragging","onStop","isDragging","NodeWrapper","xPos","yPos","nodeClasses","nodeStyle","zIndex","updateNode","storeState","resizeObserver","entries","entry","observe","unobserve","createNodeTypes","standardTypes","input","wrapNode","InputNode","DefaultNode","output","OutputNode","specialTypes","Object","keys","key","centerX","EdgeWrapper","edgeClasses","onEdgeClick","createEdgeTypes","wrapEdge","BezierEdge","straight","bezier","StraightEdge","ReactFlow","children","nodeTypesParsed","useMemo","edgeTypesParsed","gridColor","gridGap","bool","step","StepEdge","baseStyle","bottom","right","bgColor","nodeColor","canvasNode","mapClasses","nodePositions","scaleFactor","nodeColorFunc","ctx","getContext","nodesInside","fillStyle","fillRect","transformX","transformY","PlusIcon","MinusIcon","FitviewIcon"],"mappings":"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"} \ No newline at end of file +{"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/dist/easy-peasy.esm.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/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/classnames/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/react-draggable/build/utils/shims.js","../node_modules/react-draggable/build/utils/getPrefix.js","../node_modules/react-draggable/build/utils/domFns.js","../node_modules/react-draggable/build/utils/positionFns.js","../node_modules/react-draggable/build/utils/log.js","../node_modules/react-draggable/build/DraggableCore.js","../node_modules/react-draggable/build/Draggable.js","../node_modules/react-draggable/index.js","../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#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","function Similar() {\n\tthis.list = [];\n\tthis.lastItem = undefined;\n\tthis.size = 0;\n\n\treturn this;\n}\n\nSimilar.prototype.get = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn this.lastItem.val;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn this.list[index].val;\n\t}\n\n\treturn undefined;\n};\n\nSimilar.prototype.set = function(key, val) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem.val = val;\n\t\treturn this;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\tthis.list[index].val = val;\n\t\treturn this;\n\t}\n\n\tthis.lastItem = { key: key, val: val };\n\tthis.list.push(this.lastItem);\n\tthis.size++;\n\n\treturn this;\n};\n\nSimilar.prototype.delete = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem = undefined;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.size--;\n\t\treturn this.list.splice(index, 1)[0];\n\t}\n\n\treturn undefined;\n};\n\n\n// important that has() doesn't use get() in case an existing key has a falsy value, in which case has() would return false\nSimilar.prototype.has = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn true;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nSimilar.prototype.forEach = function(callback, thisArg) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tcallback.call(thisArg || this, this.list[i].val, this.list[i].key, this);\n\t}\n};\n\nSimilar.prototype.indexOf = function(key) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tif (this.isEqual(this.list[i].key, key)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nSimilar.prototype.isEqual = function(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n};\n\nmodule.exports = Similar;","module.exports = function(forceSimilar) {\n\tif (typeof Map !== 'function' || forceSimilar) {\n\t\tvar Similar = require('./similar');\n\t\treturn new Similar();\n\t}\n\telse {\n\t\treturn new Map();\n\t}\n}\n","var MapOrSimilar = require('map-or-similar');\n\nmodule.exports = function (limit) {\n\tvar cache = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true'),\n\t\tlru = [];\n\n\treturn function (fn) {\n\t\tvar memoizerific = function () {\n\t\t\tvar currentCache = cache,\n\t\t\t\tnewMap,\n\t\t\t\tfnResult,\n\t\t\t\targsLengthMinusOne = arguments.length - 1,\n\t\t\t\tlruPath = Array(argsLengthMinusOne + 1),\n\t\t\t\tisMemoized = true,\n\t\t\t\ti;\n\n\t\t\tif ((memoizerific.numArgs || memoizerific.numArgs === 0) && memoizerific.numArgs !== argsLengthMinusOne + 1) {\n\t\t\t\tthrow new Error('Memoizerific functions should always be called with the same number of arguments');\n\t\t\t}\n\n\t\t\t// loop through each argument to traverse the map tree\n\t\t\tfor (i = 0; i < argsLengthMinusOne; i++) {\n\t\t\t\tlruPath[i] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[i]\n\t\t\t\t};\n\n\t\t\t\t// climb through the hierarchical map tree until the second-last argument has been found, or an argument is missing.\n\t\t\t\t// if all arguments up to the second-last have been found, this will potentially be a cache hit (determined later)\n\t\t\t\tif (currentCache.has(arguments[i])) {\n\t\t\t\t\tcurrentCache = currentCache.get(arguments[i]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tisMemoized = false;\n\n\t\t\t\t// make maps until last value\n\t\t\t\tnewMap = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true');\n\t\t\t\tcurrentCache.set(arguments[i], newMap);\n\t\t\t\tcurrentCache = newMap;\n\t\t\t}\n\n\t\t\t// we are at the last arg, check if it is really memoized\n\t\t\tif (isMemoized) {\n\t\t\t\tif (currentCache.has(arguments[argsLengthMinusOne])) {\n\t\t\t\t\tfnResult = currentCache.get(arguments[argsLengthMinusOne]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tisMemoized = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the result wasn't memoized, compute it and cache it\n\t\t\tif (!isMemoized) {\n\t\t\t\tfnResult = fn.apply(null, arguments);\n\t\t\t\tcurrentCache.set(arguments[argsLengthMinusOne], fnResult);\n\t\t\t}\n\n\t\t\t// if there is a cache limit, purge any extra results\n\t\t\tif (limit > 0) {\n\t\t\t\tlruPath[argsLengthMinusOne] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[argsLengthMinusOne]\n\t\t\t\t};\n\n\t\t\t\tif (isMemoized) {\n\t\t\t\t\tmoveToMostRecentLru(lru, lruPath);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlru.push(lruPath);\n\t\t\t\t}\n\n\t\t\t\tif (lru.length > limit) {\n\t\t\t\t\tremoveCachedResult(lru.shift());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmemoizerific.wasMemoized = isMemoized;\n\t\t\tmemoizerific.numArgs = argsLengthMinusOne + 1;\n\n\t\t\treturn fnResult;\n\t\t};\n\n\t\tmemoizerific.limit = limit;\n\t\tmemoizerific.wasMemoized = false;\n\t\tmemoizerific.cache = cache;\n\t\tmemoizerific.lru = lru;\n\n\t\treturn memoizerific;\n\t};\n};\n\n// move current args to most recent position\nfunction moveToMostRecentLru(lru, lruPath) {\n\tvar lruLen = lru.length,\n\t\tlruPathLen = lruPath.length,\n\t\tisMatch,\n\t\ti, ii;\n\n\tfor (i = 0; i < lruLen; i++) {\n\t\tisMatch = true;\n\t\tfor (ii = 0; ii < lruPathLen; ii++) {\n\t\t\tif (!isEqual(lru[i][ii].arg, lruPath[ii].arg)) {\n\t\t\t\tisMatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (isMatch) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlru.push(lru.splice(i, 1)[0]);\n}\n\n// remove least recently used cache item and all dead branches\nfunction removeCachedResult(removedLru) {\n\tvar removedLruLen = removedLru.length,\n\t\tcurrentLru = removedLru[removedLruLen - 1],\n\t\ttmp,\n\t\ti;\n\n\tcurrentLru.cacheItem.delete(currentLru.arg);\n\n\t// walk down the tree removing dead branches (size 0) along the way\n\tfor (i = removedLruLen - 2; i >= 0; i--) {\n\t\tcurrentLru = removedLru[i];\n\t\ttmp = currentLru.cacheItem.get(currentLru.arg);\n\n\t\tif (!tmp || !tmp.size) {\n\t\t\tcurrentLru.cacheItem.delete(currentLru.arg);\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nfunction isEqual(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n}","import { isDraft, finishDraft, createDraft, setAutoFreeze } from 'immer-peasy';\nimport React, { createContext, useContext, useRef, useReducer, useLayoutEffect, useEffect, useMemo, useState } from 'react';\nimport { compose, createStore as createStore$1, applyMiddleware } from 'redux';\nimport reduxThunk from 'redux-thunk';\nimport memoizerific from 'memoizerific';\n\nvar StoreContext = createContext();\n\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction createStoreStateHook(Context) {\n return function useStoreState(mapState) {\n var store = useContext(Context);\n var mapStateRef = useRef(mapState);\n var stateRef = useRef();\n var mountedRef = useRef(true);\n var subscriptionMapStateError = useRef();\n\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n if (subscriptionMapStateError.current || mapStateRef.current !== mapState || stateRef.current === undefined) {\n try {\n stateRef.current = mapState(store.getState());\n } catch (err) {\n var errorMessage = \"An error occurred trying to map state in a useStoreState hook: \" + err.message + \".\";\n\n if (subscriptionMapStateError.current) {\n errorMessage += \"\\nThis error may be related to the following error:\\n\" + subscriptionMapStateError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n }\n\n useIsomorphicLayoutEffect(function () {\n mapStateRef.current = mapState;\n subscriptionMapStateError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n var checkMapState = function checkMapState() {\n try {\n var newState = mapStateRef.current(store.getState());\n\n if (newState === stateRef.current) {\n return;\n }\n\n stateRef.current = newState;\n } catch (err) {\n // see https://github.com/reduxjs/react-redux/issues/1179\n // There is a possibility mapState will fail due to stale state or\n // props, therefore we will just track the error and force our\n // component to update. It should then receive the updated state\n subscriptionMapStateError.current = err;\n }\n\n if (mountedRef.current) {\n forceRender({});\n }\n };\n\n var unsubscribe = store.subscribe(checkMapState);\n checkMapState();\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, []);\n return stateRef.current;\n };\n}\nvar useStoreState = createStoreStateHook(StoreContext);\nfunction createStoreActionsHook(Context) {\n return function useStoreActions(mapActions) {\n var store = useContext(Context);\n return mapActions(store.getActions());\n };\n}\nvar useStoreActions = createStoreActionsHook(StoreContext);\nfunction createStoreDispatchHook(Context) {\n return function useStoreDispatch() {\n var store = useContext(Context);\n return store.dispatch;\n };\n}\nvar useStoreDispatch = createStoreDispatchHook(StoreContext);\nfunction useStore() {\n return useContext(StoreContext);\n}\nfunction createTypedHooks() {\n return {\n useStoreActions: useStoreActions,\n useStoreDispatch: useStoreDispatch,\n useStoreState: useStoreState,\n useStore: useStore\n };\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar actionSymbol = '🙈action🙈';\nvar actionOnSymbol = '🙈actionOn🙈';\nvar computedSymbol = '🙈computedSymbol🙈';\nvar reducerSymbol = '🙈reducer🙈';\nvar thunkOnSymbol = '🙈thunkOn🙈';\nvar thunkSymbol = '🙈thunk🙈';\n\nvar debug = function debug(state) {\n if (isDraft(state)) {\n return finishDraft(createDraft(state));\n }\n\n return state;\n};\nvar memo = function memo(fn, cacheSize) {\n return memoizerific(cacheSize)(fn);\n};\nvar actionOn = function actionOn(targetResolver, fn) {\n fn[actionOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar action = function action(fn) {\n fn[actionSymbol] = {};\n return fn;\n};\nvar defaultStateResolvers = [function (state) {\n return state;\n}];\nvar computed = function computed(fnOrStateResolvers, fn) {\n if (typeof fn === 'function') {\n fn[computedSymbol] = {\n stateResolvers: fnOrStateResolvers\n };\n return fn;\n }\n\n fnOrStateResolvers[computedSymbol] = {\n stateResolvers: defaultStateResolvers\n };\n return fnOrStateResolvers;\n};\nvar thunkOn = function thunkOn(targetResolver, fn) {\n fn[thunkOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar thunk = function thunk(fn) {\n fn[thunkSymbol] = {};\n return fn;\n};\nvar reducer = function reducer(fn) {\n fn[reducerSymbol] = {};\n return fn;\n};\n\nvar isStateObject = function isStateObject(x) {\n return x !== null && typeof x === 'object' && !Array.isArray(x) && x.constructor === Object;\n};\nvar get = function get(path, target) {\n return path.reduce(function (acc, cur) {\n return isStateObject(acc) ? acc[cur] : undefined;\n }, target);\n};\nvar set = function set(path, target, value) {\n path.reduce(function (acc, cur, idx) {\n if (idx + 1 === path.length) {\n acc[cur] = value;\n } else {\n acc[cur] = acc[cur] || {};\n }\n\n return acc[cur];\n }, target);\n};\n\nvar newify = function newify(currentPath, currentState, finalValue) {\n if (currentPath.length === 0) {\n return finalValue;\n }\n\n var newState = _extends({}, currentState);\n\n var key = currentPath[0];\n\n if (currentPath.length === 1) {\n newState[key] = finalValue;\n } else {\n newState[key] = newify(currentPath.slice(1), newState[key], finalValue);\n }\n\n return newState;\n};\n\nfunction createStoreInternals(_ref) {\n var disableImmer = _ref.disableImmer,\n initialState = _ref.initialState,\n injections = _ref.injections,\n model = _ref.model,\n reducerEnhancer = _ref.reducerEnhancer,\n references = _ref.references;\n\n function simpleProduce(path, state, fn) {\n if (disableImmer) {\n var _current = get(path, state);\n\n var next = fn(_current);\n\n if (_current !== next) {\n return newify(path, state, next);\n }\n\n return state;\n }\n\n var draft = createDraft(state);\n\n var current = get(path, draft);\n\n fn(current);\n return finishDraft(draft);\n }\n\n var defaultState = initialState;\n var actionCreatorDict = {};\n var actionCreators = {};\n var actionReducersDict = {};\n var actionThunks = {};\n var computedProperties = [];\n var customReducers = [];\n var listenerActionCreators = {};\n var listenerActionMap = {};\n var listenerDefinitions = [];\n var computedState = {\n isInReducer: false,\n currentState: defaultState\n };\n\n var recursiveExtractDefsFromModel = function recursiveExtractDefsFromModel(current, parentPath) {\n return Object.keys(current).forEach(function (key) {\n var value = current[key];\n var path = [].concat(parentPath, [key]);\n var meta = {\n parent: parentPath,\n path: path\n };\n\n var handleValueAsState = function handleValueAsState() {\n var initialParentRef = get(parentPath, initialState);\n\n if (initialParentRef && key in initialParentRef) {\n set(path, defaultState, initialParentRef[key]);\n } else {\n set(path, defaultState, value);\n }\n };\n\n if (typeof value === 'function') {\n if (value[actionSymbol] || value[actionOnSymbol]) {\n var prefix = value[actionSymbol] ? '@action' : '@actionOn';\n var type = prefix + \".\" + path.join('.');\n var actionMeta = value[actionSymbol] || value[actionOnSymbol];\n actionMeta.actionName = key;\n actionMeta.type = type;\n actionMeta.parent = meta.parent;\n actionMeta.path = meta.path; // Action Reducer\n\n actionReducersDict[type] = value; // Action Creator\n\n var actionCreator = function actionCreator(payload) {\n var actionDefinition = {\n type: type,\n payload: payload\n };\n\n if (value[actionOnSymbol] && actionMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(actionMeta.resolvedTargets);\n }\n\n var result = references.dispatch(actionDefinition);\n return result;\n };\n\n actionCreator.type = type;\n actionCreatorDict[type] = actionCreator;\n\n if (key !== 'easyPeasyReplaceState') {\n if (value[actionOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, actionCreator);\n } else {\n set(path, actionCreators, actionCreator);\n }\n }\n } else if (value[thunkSymbol] || value[thunkOnSymbol]) {\n var _prefix = value[thunkSymbol] ? '@thunk' : '@thunkOn';\n\n var _type = _prefix + \".\" + path.join('.');\n\n var thunkMeta = value[thunkSymbol] || value[thunkOnSymbol];\n thunkMeta.actionName = key;\n thunkMeta.type = _type;\n thunkMeta.parent = meta.parent;\n thunkMeta.path = meta.path; // Thunk Action\n\n var thunkHandler = function thunkHandler(payload) {\n var helpers = {\n dispatch: references.dispatch,\n getState: function getState() {\n return get(parentPath, references.getState());\n },\n getStoreActions: function getStoreActions() {\n return actionCreators;\n },\n getStoreState: references.getState,\n injections: injections,\n meta: meta\n };\n\n if (value[thunkOnSymbol] && thunkMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(thunkMeta.resolvedTargets);\n }\n\n return value(get(parentPath, actionCreators), payload, helpers);\n };\n\n set(path, actionThunks, thunkHandler); // Thunk Action Creator\n\n var startType = _type + \"(start)\";\n var successType = _type + \"(success)\";\n var failType = _type + \"(fail)\";\n\n var _actionCreator = function _actionCreator(payload) {\n var dispatchError = function dispatchError(err) {\n references.dispatch({\n type: failType,\n payload: payload,\n error: err\n });\n references.dispatch({\n type: _type,\n payload: payload,\n error: err\n });\n };\n\n var dispatchSuccess = function dispatchSuccess(result) {\n references.dispatch({\n type: successType,\n payload: payload,\n result: result\n });\n references.dispatch({\n type: _type,\n payload: payload,\n result: result\n });\n };\n\n references.dispatch({\n type: startType,\n payload: payload\n });\n\n try {\n var result = references.dispatch(function () {\n return thunkHandler(payload);\n });\n\n if (typeof result === 'object' && typeof result.then === 'function') {\n return result.then(function (resolved) {\n dispatchSuccess(resolved);\n return resolved;\n }).catch(function (err) {\n dispatchError(err);\n throw err;\n });\n }\n\n dispatchSuccess(result);\n return result;\n } catch (err) {\n dispatchError(err);\n throw err;\n }\n };\n\n _actionCreator.type = _type;\n _actionCreator.startType = startType;\n _actionCreator.successType = successType;\n _actionCreator.failType = failType;\n actionCreatorDict[_type] = _actionCreator;\n\n if (value[thunkOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, _actionCreator);\n } else {\n set(path, actionCreators, _actionCreator);\n }\n } else if (value[computedSymbol]) {\n var parent = get(parentPath, defaultState);\n\n var computedMeta = value[computedSymbol];\n var memoisedResultFn = memoizerific(1)(value);\n\n var createComputedProperty = function createComputedProperty(o) {\n Object.defineProperty(o, key, {\n configurable: true,\n enumerable: true,\n get: function get$1() {\n var storeState;\n\n if (computedState.isInReducer) {\n storeState = computedState.currentState;\n } else if (references.getState == null) {\n return undefined;\n } else {\n try {\n storeState = references.getState();\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Invalid access attempt to a computed property');\n }\n\n return undefined;\n }\n }\n\n var state = get(parentPath, storeState);\n\n var inputs = computedMeta.stateResolvers.map(function (resolver) {\n return resolver(state, storeState);\n });\n return memoisedResultFn.apply(void 0, inputs);\n }\n });\n };\n\n createComputedProperty(parent);\n computedProperties.push({\n key: key,\n parentPath: parentPath,\n createComputedProperty: createComputedProperty\n });\n } else if (value[reducerSymbol]) {\n customReducers.push({\n key: key,\n parentPath: parentPath,\n reducer: value\n });\n } else {\n handleValueAsState();\n }\n } else if (isStateObject(value)) {\n var existing = get(path, defaultState);\n\n if (existing == null) {\n set(path, defaultState, {});\n }\n\n recursiveExtractDefsFromModel(value, path);\n } else {\n handleValueAsState();\n }\n });\n };\n\n recursiveExtractDefsFromModel(model, []);\n listenerDefinitions.forEach(function (listenerActionOrThunk) {\n var listenerMeta = listenerActionOrThunk[actionOnSymbol] || listenerActionOrThunk[thunkOnSymbol];\n var targets = listenerMeta.targetResolver(get(listenerMeta.parent, actionCreators), actionCreators);\n var targetTypes = (Array.isArray(targets) ? targets : [targets]).reduce(function (acc, target) {\n if (typeof target === 'function' && target.type && actionCreatorDict[target.type]) {\n acc.push(target.type);\n } else if (typeof target === 'string') {\n acc.push(target);\n }\n\n return acc;\n }, []);\n listenerMeta.resolvedTargets = targetTypes;\n targetTypes.forEach(function (targetType) {\n var listenerReg = listenerActionMap[targetType] || [];\n listenerReg.push(actionCreatorDict[listenerMeta.type]);\n listenerActionMap[targetType] = listenerReg;\n });\n });\n\n var createReducer = function createReducer() {\n var runActionReducerAtPath = function runActionReducerAtPath(state, action, actionReducer, path) {\n return simpleProduce(path, state, function (draft) {\n return actionReducer(draft, action.payload);\n });\n };\n\n var reducerForActions = function reducerForActions(state, action) {\n var actionReducer = actionReducersDict[action.type];\n\n if (actionReducer) {\n var actionMeta = actionReducer[actionSymbol] || actionReducer[actionOnSymbol];\n return runActionReducerAtPath(state, action, actionReducer, actionMeta.parent);\n }\n\n return state;\n };\n\n var reducerForCustomReducers = function reducerForCustomReducers(state, action) {\n return customReducers.reduce(function (acc, _ref2) {\n var parentPath = _ref2.parentPath,\n key = _ref2.key,\n red = _ref2.reducer;\n return simpleProduce(parentPath, acc, function (draft) {\n draft[key] = red(draft[key], action);\n return draft;\n });\n }, state);\n };\n\n var rootReducer = function rootReducer(state, action) {\n var stateAfterActions = reducerForActions(state, action);\n var next = customReducers.length > 0 ? reducerForCustomReducers(stateAfterActions, action) : stateAfterActions;\n\n if (state !== next) {\n computedProperties.forEach(function (_ref3) {\n var parentPath = _ref3.parentPath,\n createComputedProperty = _ref3.createComputedProperty;\n createComputedProperty(get(parentPath, next));\n });\n }\n\n return next;\n };\n\n return rootReducer;\n };\n\n return {\n actionCreatorDict: actionCreatorDict,\n actionCreators: actionCreators,\n computedProperties: computedProperties,\n computedState: computedState,\n defaultState: defaultState,\n listenerActionCreators: listenerActionCreators,\n listenerActionMap: listenerActionMap,\n reducer: reducerEnhancer(createReducer())\n };\n}\n\nfunction createStore(model, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n compose$1 = _options.compose,\n _options$devTools = _options.devTools,\n devTools = _options$devTools === void 0 ? true : _options$devTools,\n _options$disableImmer = _options.disableImmer,\n disableImmer = _options$disableImmer === void 0 ? false : _options$disableImmer,\n _options$enhancers = _options.enhancers,\n enhancers = _options$enhancers === void 0 ? [] : _options$enhancers,\n _options$initialState = _options.initialState,\n initialState = _options$initialState === void 0 ? {} : _options$initialState,\n injections = _options.injections,\n _options$middleware = _options.middleware,\n middleware = _options$middleware === void 0 ? [] : _options$middleware,\n _options$mockActions = _options.mockActions,\n mockActions = _options$mockActions === void 0 ? false : _options$mockActions,\n _options$name = _options.name,\n storeName = _options$name === void 0 ? \"EasyPeasyStore\" : _options$name,\n _options$reducerEnhan = _options.reducerEnhancer,\n reducerEnhancer = _options$reducerEnhan === void 0 ? function (rootReducer) {\n return rootReducer;\n } : _options$reducerEnhan;\n\n var bindReplaceState = function bindReplaceState(modelDef) {\n return _extends({}, modelDef, {\n easyPeasyReplaceState: action(function (state, payload) {\n return payload;\n })\n });\n };\n\n var modelDefinition = bindReplaceState(model);\n var mockedActions = [];\n var references = {};\n\n var bindStoreInternals = function bindStoreInternals(state) {\n if (state === void 0) {\n state = {};\n }\n\n references.internals = createStoreInternals({\n disableImmer: disableImmer,\n initialState: state,\n injections: injections,\n model: modelDefinition,\n reducerEnhancer: reducerEnhancer,\n references: references\n });\n };\n\n bindStoreInternals(initialState);\n\n var listenerActionsMiddleware = function listenerActionsMiddleware() {\n return function (next) {\n return function (action) {\n var result = next(action);\n\n if (action && references.internals.listenerActionMap[action.type] && references.internals.listenerActionMap[action.type].length > 0) {\n var sourceAction = references.internals.actionCreatorDict[action.type];\n references.internals.listenerActionMap[action.type].forEach(function (actionCreator) {\n actionCreator({\n type: sourceAction ? sourceAction.type : action.type,\n payload: action.payload,\n error: action.error,\n result: action.result\n });\n });\n }\n\n return result;\n };\n };\n };\n\n var mockActionsMiddleware = function mockActionsMiddleware() {\n return function () {\n return function (action) {\n if (action != null) {\n mockedActions.push(action);\n }\n\n return undefined;\n };\n };\n };\n\n var computedPropertiesMiddleware = function computedPropertiesMiddleware(store) {\n return function (next) {\n return function (action) {\n references.internals.computedState.currentState = store.getState();\n references.internals.computedState.isInReducer = true;\n return next(action);\n };\n };\n };\n\n var easyPeasyMiddleware = [computedPropertiesMiddleware, reduxThunk].concat(middleware, [listenerActionsMiddleware]);\n\n if (mockActions) {\n easyPeasyMiddleware.push(mockActionsMiddleware);\n }\n\n var composeEnhancers = compose$1 || (devTools && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: storeName\n }) : compose);\n var store = createStore$1(references.internals.reducer, references.internals.defaultState, composeEnhancers.apply(void 0, [applyMiddleware.apply(void 0, easyPeasyMiddleware)].concat(enhancers)));\n store.subscribe(function () {\n references.internals.computedState.isInReducer = false;\n });\n references.dispatch = store.dispatch;\n references.getState = store.getState;\n\n var bindActionCreators = function bindActionCreators() {\n Object.keys(store.dispatch).forEach(function (actionsKey) {\n delete store.dispatch[actionsKey];\n });\n Object.keys(references.internals.actionCreators).forEach(function (key) {\n store.dispatch[key] = references.internals.actionCreators[key];\n });\n };\n\n bindActionCreators();\n\n var rebindStore = function rebindStore(removeKey) {\n var currentState = store.getState();\n\n if (removeKey) {\n delete currentState[removeKey];\n }\n\n bindStoreInternals(store.getState());\n store.replaceReducer(references.internals.reducer);\n references.internals.actionCreatorDict['@action.easyPeasyReplaceState'](references.internals.defaultState);\n bindActionCreators();\n };\n\n return Object.assign(store, {\n addModel: function addModel(key, modelForKey) {\n if (modelDefinition[key] && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model already contains a model definition for \\\"\" + key + \"\\\"\");\n store.removeModel(key);\n }\n\n modelDefinition[key] = modelForKey;\n rebindStore();\n },\n clearMockedActions: function clearMockedActions() {\n mockedActions = [];\n },\n getActions: function getActions() {\n return references.internals.actionCreators;\n },\n getListeners: function getListeners() {\n return references.internals.listenerActionCreators;\n },\n getMockedActions: function getMockedActions() {\n return [].concat(mockedActions);\n },\n reconfigure: function reconfigure(newModel) {\n modelDefinition = bindReplaceState(newModel);\n rebindStore();\n },\n removeModel: function removeModel(key) {\n if (!modelDefinition[key]) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model does not contain a model definition for \\\"\" + key + \"\\\"\");\n }\n\n return;\n }\n\n delete modelDefinition[key];\n rebindStore(key);\n }\n });\n}\n\n/* eslint-disable react/prop-types */\nfunction createContextStore(model, config) {\n var StoreContext = createContext();\n\n function Provider(_ref) {\n var children = _ref.children,\n initialData = _ref.initialData;\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n }\n\n function useStore() {\n return useContext(StoreContext);\n }\n\n return {\n Provider: Provider,\n useStore: useStore,\n useStoreState: createStoreStateHook(StoreContext),\n useStoreActions: createStoreActionsHook(StoreContext),\n useStoreDispatch: createStoreDispatchHook(StoreContext)\n };\n}\n\n/**\n * Some good references on the topic of reinitialisation:\n * - https://github.com/facebook/react/issues/14830\n */\n\nfunction createComponentStore(model, config) {\n return function useLocalStore(initialData) {\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n var previousStateRef = useRef(store.getState());\n\n var _useState = useState(function () {\n return store.getState();\n }),\n currentState = _useState[0],\n setCurrentState = _useState[1];\n\n useEffect(function () {\n return store.subscribe(function () {\n var nextState = store.getState();\n\n if (previousStateRef.current !== nextState) {\n previousStateRef.current = nextState;\n setCurrentState(nextState);\n }\n });\n }, [store]);\n return [currentState, store.getActions()];\n };\n}\n\nvar StoreProvider = function StoreProvider(_ref) {\n var children = _ref.children,\n store = _ref.store;\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n};\n\n/**\n * The auto freeze feature of immer doesn't seem to work in our testing. We have\n * explicitly disabled it to avoid perf issues.\n */\n\nsetAutoFreeze(false);\n\nexport { StoreProvider, action, actionOn, computed, createComponentStore, createContextStore, createStore, createTypedHooks, debug, memo, reducer, thunk, thunkOn, useStore, useStoreActions, useStoreDispatch, useStoreState };\n//# sourceMappingURL=easy-peasy.esm.js.map\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","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 return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","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 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","/*!\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","/**\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 ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\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 };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findInArray = findInArray;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\nexports.int = int;\nexports.dontSetMe = dontSetMe;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPrefix = getPrefix;\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix(prop\n/*: string*/\n= 'transform')\n/*: string*/\n{\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n const style = window.document.documentElement.style;\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n let out = '';\n let shouldCapitalize = true;\n\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n\n return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = getPrefix();\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.addEvent = addEvent;\nexports.removeEvent = removeEvent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTranslation = getTranslation;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nexports.styleHacks = styleHacks;\nexports.addClassName = addClassName;\nexports.removeClassName = removeClassName;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nlet matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n } // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n\n\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n let node = el;\n\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n} // Get from offsetParent\n\n\nfunction offsetXYFromParent(evt\n/*: {clientX: number, clientY: number}*/\n, offsetParent\n/*: HTMLElement*/\n)\n/*: ControlPosition*/\n{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n return {\n x,\n y\n };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\n\nfunction getTranslation({\n x,\n y\n}\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n let translation = `translate(${x}${unitSuffix},${y}${unitSuffix})`;\n\n if (positionOffset) {\n const defaultX = `${typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix}`;\n const defaultY = `${typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix}`;\n translation = `translate(${defaultX}, ${defaultY})` + translation;\n }\n\n return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n }\n } catch (e) {// probably IE\n }\n}\n\nfunction styleHacks(childStyle\n/*: Object*/\n= {})\n/*: Object*/\n{\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBoundPosition = getBoundPosition;\nexports.snapToGrid = snapToGrid;\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.getControlPosition = getControlPosition;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\n\nvar _shims = require(\"./shims\");\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./domFns\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n } // Keep x and y below right and bottom limits...\n\n\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n const node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent);\n} // Create an data object exposed by 's events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n const state = draggable.state;\n const isStart = !(0, _shims.isNum)(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX,\n deltaY: y - state.lastY,\n lastX: state.lastX,\n lastY: state.lastY,\n x,\n y\n };\n }\n} // Create an data exposed by 's events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n const scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n const node = _reactDom.default.findDOMNode(draggable);\n\n if (!node) {\n throw new Error(': Unmounted during event!');\n } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log(...args) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n}; // Default to mouse events.\n\nlet dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};*/\n\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};*/\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nclass DraggableCore extends _react.default.Component {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN,\n lastY: NaN,\n touchIdentifier: null\n });\n\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e); // Only accept left-clicks.\n\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n\n const {\n ownerDocument\n } = thisNode; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n return;\n } // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n\n\n const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.setState({\n touchIdentifier\n }); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n\n const {\n x,\n y\n } = position; // Create an event object with all the data parents need to make a decision here.\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return; // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n\n this.setState({\n dragging: true,\n lastX: x,\n lastY: y\n }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n\n _defineProperty(this, \"handleDrag\", e => {\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault(); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position; // Snap to grid if prop has been provided\n\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX,\n deltaY = y - this.state.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents')\n /*: any*/\n )\n /*: MouseTouchEvent*/\n ); // I see why this insanity was deprecated\n // $FlowIgnore\n\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n });\n\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.state.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {\n x,\n y\n } = position;\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n }); // Call event handler\n\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n });\n\n _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n\n _defineProperty(this, \"onTouchStart\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onTouchEnd\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStop(e);\n });\n }\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return _react.default.cloneElement(_react.default.Children.only(this.props.children), {\n style: (0, _domFns.styleHacks)(this.props.children.props.style),\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n\n}\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props\n /*: DraggableCoreProps*/\n , propName\n /*: $Keys*/\n ) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {}\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Define \n//\nclass Draggable extends _react.default.Component {\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps({\n position\n }\n /*: DraggableProps*/\n , {\n prevPropsPosition\n }\n /*: DraggableState*/\n ) {\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: { ...position\n }\n };\n }\n\n return null;\n }\n\n constructor(props\n /*: DraggableProps*/\n ) {\n super(props);\n\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState\n /*: $Shape*/\n = {\n x: uiData.x,\n y: uiData.y\n }; // Keep within bounds.\n\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n newState.x += this.state.slackX;\n newState.y += this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n } // Short-circuit if user's callback killed it.\n\n\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n const shouldStop = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldStop === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState\n /*: $Shape*/\n = {\n dragging: false,\n slackX: 0,\n slackY: 0\n }; // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n const controlled = Boolean(this.props.position);\n\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n });\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: { ...props.position\n },\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && _reactDom.default.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n\n componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\n\n render()\n /*: ReactElement*/\n {\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n }; // If this element was SVG, we use the `transform` attribute.\n\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n } // Mark with class while dragging\n\n\n const className = (0, _classnames.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n }); // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n return _react.default.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), _react.default.cloneElement(_react.default.Children.only(children), {\n className: className,\n style: { ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n\n}\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", { // Accepts all props accepts.\n ..._DraggableCore.default.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(Draggable, \"defaultProps\", { ..._DraggableCore.default.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n position: null,\n scale: 1\n});","var Draggable = require('./build/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./build/DraggableCore').default;\n","\"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","get","set","createStore","reduxThunk","createStore$1","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","_shims","_domFns","require$$1","require$$2","require$$3","_positionFns","require$$4","require$$5"],"mappings":"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"} \ No newline at end of file diff --git a/dist/ReactFlow.js b/dist/ReactFlow.js index 4e57653e8..4201c560f 100644 --- a/dist/ReactFlow.js +++ b/dist/ReactFlow.js @@ -8,92 +8,6 @@ var React = require('react'); var React__default = _interopDefault(React); var reactDom = _interopDefault(require('react-dom')); -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; -} - -/** - * 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; - -function emptyFunction() {} -function emptyFunctionWithReset() {} -emptyFunctionWithReset.resetWarningCache = emptyFunction; - -var factoryWithThrowingShims = function() { - function shim(props, propName, componentName, location, propFullName, secret) { - if (secret === ReactPropTypesSecret_1) { - // It is still safe when called from React. - return; - } - 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; - } shim.isRequired = shim; - function getShim() { - return shim; - } // Important! - // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. - var ReactPropTypes = { - array: shim, - bool: shim, - func: shim, - number: shim, - object: shim, - string: shim, - symbol: shim, - - any: shim, - arrayOf: getShim, - element: shim, - elementType: shim, - instanceOf: getShim, - node: shim, - objectOf: getShim, - oneOf: getShim, - oneOfType: getShim, - shape: getShim, - exact: getShim, - - checkPropTypes: emptyFunctionWithReset, - resetWarningCache: emptyFunction - }; - - 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. - */ - -{ - // By explicitly using `prop-types` you are opting into new production behavior. - // http://fb.me/prop-types-in-prod - module.exports = factoryWithThrowingShims(); -} -}); - 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"; @@ -1984,6 +1898,24 @@ function createStoreActionsHook(Context) { }; } 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 createTypedHooks() { + return { + useStoreActions: useStoreActions, + useStoreDispatch: useStoreDispatch, + useStoreState: useStoreState, + useStore: useStore + }; +} function _extends() { _extends = Object.assign || function (target) { @@ -2597,169 +2529,54 @@ var StoreProvider = function StoreProvider(_ref) { setAutoFreeze(false); -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; -} - -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 ownKeys$2(object, enumerableOnly) { - var keys = Object.keys(object); - - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - keys.push.apply(keys, symbols); - } - - return keys; -} - -function _objectSpread2$1(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - - if (i % 2) { - ownKeys$2(source, true).forEach(function (key) { - _defineProperty$1(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys$2(source).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - - return target; -} - -function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - - for (i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; - } - - return target; -} - -function _objectWithoutProperties(source, excluded) { - if (source == null) return {}; - - var target = _objectWithoutPropertiesLoose(source, excluded); - - var key, i; - - if (Object.getOwnPropertySymbols) { - var sourceSymbolKeys = Object.getOwnPropertySymbols(source); - - for (i = 0; i < sourceSymbolKeys.length; i++) { - key = sourceSymbolKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; - target[key] = source[key]; - } - } - - return target; -} - -function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); -} - -function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); -} - -function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - - return arr2; - } -} - -function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; -} - -function _iterableToArray(iter) { - if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); -} - -function _iterableToArrayLimit(arr, i) { - if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { - return; - } - - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; -} - -function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance"); -} - -function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); +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() {}}; @@ -5930,365 +5747,279 @@ var fastDeepEqual = function equal(a, b) { return a!==a && b!==b; }; -var actions = { - setOnConnect: action(function (state, onConnect) { - state.onConnect = onConnect; - }), - setNodes: action(function (state, nodes) { - state.nodes = nodes; - }), - setEdges: action(function (state, edges) { - state.edges = edges; - }), - updateNodeData: action(function (state, _ref) { - var id = _ref.id, - data = _objectWithoutProperties(_ref, ["id"]); - - state.nodes.forEach(function (n) { - if (n.id === id) { - n.__rg = _objectSpread2$1({}, n.__rg, {}, data); - } - }); - }), - updateNodePos: action(function (state, _ref2) { - var id = _ref2.id, - pos = _ref2.pos; - state.nodes.forEach(function (n) { - if (n.id === id) { - n.__rg = _objectSpread2$1({}, n.__rg, { - position: pos - }); - } - }); - }), - setSelection: action(function (state, isActive) { - state.selectionActive = isActive; - }), - setNodesSelection: action(function (state, _ref3) { - var isActive = _ref3.isActive, - selection = _ref3.selection; - - if (!isActive) { - state.nodesSelectionActive = false; - state.selectedElements = []; - return; - } - - var selectedNodes = getNodesInside(state.nodes, selection, state.transform); - var selectedNodesBbox = getBoundingBox(selectedNodes); - state.selection = selection; - state.nodesSelectionActive = true; - state.selectedNodesBbox = selectedNodesBbox; - state.nodesSelectionActive = true; - }), - 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 = [].concat(_toConsumableArray(selectedNodes), _toConsumableArray(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, _ref4) { - var zoom = _ref4.zoom, - selection = _ref4.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; - }) -}; - -var store = createStore$1(_objectSpread2$1({ - 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: {}, - connectionSourceId: null, - connectionPosition: { - x: 0, - y: 0 - }, - onConnect: function onConnect() {} -}, actions)); - -var isFunction = function isFunction(obj) { - return !!(obj && obj.constructor && obj.call && obj.apply); -}; -var isDefined = function isDefined(obj) { - return typeof obj !== 'undefined'; -}; -var inInputDOMNode = function inInputDOMNode(e) { - return e && e.target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.nodeName); -}; -var getDimensions = function getDimensions() { - var node = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - return { - width: node.offsetWidth, - height: node.offsetHeight - }; +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, + connectionSourceId: null, + connectionPosition: { x: 0, y: 0 }, + 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; + }), + updateNodeData: action(function (state, _a) { + var id = _a.id, data = __rest(_a, ["id"]); + state.nodes.forEach(function (n) { + if (n.id === id) { + n.__rg = __assign(__assign({}, n.__rg), data); + } + }); + }), + updateNodePos: action(function (state, _a) { + var id = _a.id, pos = _a.pos; + state.nodes.forEach(function (n) { + if (n.id === id) { + n.__rg = __assign(__assign({}, n.__rg), { position: pos }); + } + }); + }), + setSelection: action(function (state, isActive) { + state.selectionActive = isActive; + }), + setNodesSelection: action(function (state, _a) { + var isActive = _a.isActive, selection = _a.selection; + if (!isActive) { + state.nodesSelectionActive = false; + state.selectedElements = []; + return; + } + var selectedNodes = getNodesInside(state.nodes, selection, state.transform); + var selectedNodesBbox = getBoundingBox(selectedNodes); + state.selection = selection; + state.nodesSelectionActive = true; + state.selectedNodesBbox = selectedNodesBbox; + state.nodesSelectionActive = true; + }), + 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; + }) +}; +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)); + }); +}; +function getEdgeId(edgeParams) { + return "reactflow__edge-" + edgeParams.source + "-" + edgeParams.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, transform) { + var x = _a.x, y = _a.y; + var rendererX = (x - transform[0]) * (1 / transform[2]); + var rendererY = (y - transform[1]) * (1 / transform[2]); + return { + x: rendererX, + y: rendererY + }; +}; +var parseElement = function (element, transform) { + 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), + width: null, + height: null, + handleBounds: {} + } }); +}; +var getBoundingBox = function (nodes) { + var bbox = nodes.reduce(function (res, node) { + var position = node.__rg.position; + var x2 = position.x + node.__rg.width; + var y2 = position.y + node.__rg.height; + if (position.x < res.minX) { + res.minX = position.x; + } + if (x2 > res.maxX) { + res.maxX = x2; + } + if (position.y < res.minY) { + res.minY = position.y; + } + if (y2 > res.maxY) { + res.maxY = y2; + } + return res; + }, { + minX: Number.MAX_VALUE, + minY: Number.MAX_VALUE, + maxX: 0, + maxY: 0 + }); + return { + x: bbox.minX, + y: bbox.minY, + width: bbox.maxX - bbox.minX, + height: bbox.maxY - bbox.minY + }; +}; +var getNodesInside = function (nodes, bbox, transform, partially) { + if (transform === void 0) { transform = [0, 0, 1]; } + if (partially === void 0) { partially = false; } + return nodes + .filter(function (n) { + var bboxPos = { + x: (bbox.x - transform[0]) * (1 / transform[2]), + y: (bbox.y - transform[1]) * (1 / transform[2]) + }; + var bboxWidth = bbox.width * (1 / transform[2]); + var bboxHeight = bbox.height * (1 / transform[2]); + var _a = n.__rg, position = _a.position, width = _a.width, height = _a.height; + var nodeWidth = partially ? -width : width; + var nodeHeight = partially ? 0 : height; + var offsetX = partially ? width : 0; + var offsetY = partially ? height : 0; + return ((position.x + offsetX > bboxPos.x && (position.x + nodeWidth) < (bboxPos.x + bboxWidth)) && + (position.y + offsetY > bboxPos.y && (position.y + nodeHeight) < (bboxPos.y + bboxHeight))); + }); +}; +var getConnectedEdges = function (nodes, edges) { + var nodeIds = nodes.map(function (n) { return n.id; }); + return edges.filter(function (e) { + var hasSourceHandleId = e.source.includes('__'); + var hasTargetHandleId = e.target.includes('__'); + var sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source; + var targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target; + return nodeIds.includes(sourceId) || nodeIds.includes(targetId); + }); +}; +var fitView = function (_a) { + var padding = (_a === void 0 ? { padding: 0 } : _a).padding; + var state = store.getState(); + var bounds = getBoundingBox(state.nodes); + var maxBoundsSize = Math.max(bounds.width, bounds.height); + var k = Math.min(state.width, state.height) / (maxBoundsSize + (maxBoundsSize * padding)); + var boundsCenterX = bounds.x + (bounds.width / 2); + var boundsCenterY = bounds.y + (bounds.height / 2); + var transform = [(state.width / 2) - (boundsCenterX * k), (state.height / 2) - (boundsCenterY * k)]; + var fittedTransform = identity$1.translate(transform[0], transform[1]).scale(k); + state.d3Selection.call(state.d3Zoom.transform, fittedTransform); +}; +var zoomIn = function () { + var state = store.getState(); + state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] + 0.2); +}; +var zoomOut = function () { + var state = store.getState(); + state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] - 0.2); }; -var isEdge = function isEdge(element) { - return element.source && element.target; -}; -var isNode = function isNode(element) { - return !element.source && !element.target; -}; -var getOutgoers = function getOutgoers(node, elements) { - if (!isNode(node)) { - return []; - } +function renderNode(node, props, state) { + var nodeType = node.type || 'default'; + if (!props.nodeTypes[nodeType]) { + console.warn("No node type found for type \"" + nodeType + "\". Using fallback type \"default\"."); + } + var NodeComponent = (props.nodeTypes[nodeType] || props.nodeTypes.default); + var selected = state.selectedElements + .filter(isNode) + .map(function (e) { return e.id; }) + .includes(node.id); + return (React__default.createElement(NodeComponent, { key: node.id, id: node.id, type: node.type, data: node.data, xPos: node.__rg.position.x, yPos: node.__rg.position.y, onClick: props.onElementClick, onNodeDragStop: props.onNodeDragStop, transform: state.transform, selected: selected, style: node.style })); +} +var NodeRenderer = React.memo(function (props) { + var state = useStoreState$1(function (s) { return ({ + nodes: s.nodes, + transform: s.transform, + selectedElements: s.selectedElements + }); }); + var transform = state.transform, nodes = state.nodes; + var transformStyle = { transform: "translate(" + transform[0] + "px," + transform[1] + "px) scale(" + transform[2] + ")" }; + return (React__default.createElement("div", { className: "react-flow__nodes", style: transformStyle }, nodes.map(function (node) { return renderNode(node, props, state); }))); +}); +NodeRenderer.displayName = 'NodeRenderer'; - 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 removeElements(elementsToRemove, elements) { - var nodeIdsToRemove = elementsToRemove.map(function (n) { - return n.id; - }); - return elements.filter(function (e) { - return !nodeIdsToRemove.includes(e.id) && !nodeIdsToRemove.includes(e.target) && !nodeIdsToRemove.includes(e.source); - }); -}; +function unwrapExports (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} -function getEdgeId(params) { - return "reactflow__edge-".concat(params.source, "-").concat(params.target); +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; } -var addEdge = function addEdge(edgeParams, elements) { - if (!edgeParams.source || !edgeParams.target) { - throw new Error('Can not create edge. An edge needs a source and a target'); - } +var classnames = createCommonjsModule(function (module) { +/*! + Copyright (c) 2017 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/* global define */ - return elements.concat(_objectSpread2$1({}, edgeParams, { - id: isDefined(edgeParams.id) ? edgeParams.id : getEdgeId(edgeParams) - })); -}; - -var pointToRendererPoint = function pointToRendererPoint(_ref, transform) { - var x = _ref.x, - y = _ref.y; - var rendererX = (x - transform[0]) * (1 / [transform[2]]); - var rendererY = (y - transform[1]) * (1 / [transform[2]]); - return { - x: rendererX, - y: rendererY - }; -}; - -var parseElement = function parseElement(e, transform) { - if (!e.id) { - throw new Error('All elements (nodes and edges) need to have an id.'); - } - - if (isEdge(e)) { - return _objectSpread2$1({}, e, { - id: e.id.toString(), - type: e.type || 'default' - }); - } - - return _objectSpread2$1({}, e, { - id: e.id.toString(), - type: e.type || 'default', - __rg: { - position: pointToRendererPoint(e.position, transform), - width: null, - height: null, - handleBounds: {} - } - }); -}; -var getBoundingBox = function getBoundingBox(nodes) { - var bbox = nodes.reduce(function (res, node) { - var position = node.__rg.position; - var x2 = position.x + node.__rg.width; - var y2 = position.y + node.__rg.height; - - if (position.x < res.minX) { - res.minX = position.x; - } - - if (x2 > res.maxX) { - res.maxX = x2; - } - - if (position.y < res.minY) { - res.minY = position.y; - } - - if (y2 > res.maxY) { - res.maxY = y2; - } - - return res; - }, { - minX: Number.MAX_VALUE, - minY: Number.MAX_VALUE, - maxX: 0, - maxY: 0 - }); - return { - x: bbox.minX, - y: bbox.minY, - width: bbox.maxX - bbox.minX, - height: bbox.maxY - bbox.minY - }; -}; -var getNodesInside = function getNodesInside(nodes, bbox) { - var transform = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [0, 0, 1]; - var partially = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - return nodes.filter(function (n) { - var bboxPos = { - x: (bbox.x - transform[0]) * (1 / transform[2]), - y: (bbox.y - transform[1]) * (1 / transform[2]) - }; - var bboxWidth = bbox.width * (1 / transform[2]); - var bboxHeight = bbox.height * (1 / transform[2]); - var _n$__rg = n.__rg, - position = _n$__rg.position, - width = _n$__rg.width, - height = _n$__rg.height; - var nodeWidth = partially ? -width : width; - var nodeHeight = partially ? 0 : height; - var offsetX = partially ? width : 0; - var offsetY = partially ? height : 0; - return position.x + offsetX > bboxPos.x && position.x + nodeWidth < bboxPos.x + bboxWidth && position.y + offsetY > bboxPos.y && position.y + nodeHeight < bboxPos.y + bboxHeight; - }); -}; -var getConnectedEdges = function getConnectedEdges(nodes, edges) { - var nodeIds = nodes.map(function (n) { - return n.id; - }); - return edges.filter(function (e) { - var hasSourceHandleId = e.source.includes('__'); - var hasTargetHandleId = e.target.includes('__'); - var sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source; - var targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target; - return nodeIds.includes(sourceId) || nodeIds.includes(targetId); - }); -}; -var fitView = function fitView() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref2$padding = _ref2.padding, - padding = _ref2$padding === void 0 ? 0 : _ref2$padding; - - var state = store.getState(); - var bounds = getBoundingBox(state.nodes); - var maxBoundsSize = Math.max(bounds.width, bounds.height); - var k = Math.min(state.width, state.height) / (maxBoundsSize + maxBoundsSize * padding); - var boundsCenterX = bounds.x + bounds.width / 2; - var boundsCenterY = bounds.y + bounds.height / 2; - var transform = [state.width / 2 - boundsCenterX * k, state.height / 2 - boundsCenterY * k]; - var fittedTransform = identity$1.translate(transform[0], transform[1]).scale(k); - state.d3Selection.call(state.d3Zoom.transform, fittedTransform); -}; -var zoomIn = function zoomIn() { - var state = store.getState(); - state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] + 0.2); -}; -var zoomOut = function zoomOut() { - var state = store.getState(); - state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] - 0.2); -}; - -function renderNode(d, props, state) { - var nodeType = d.type || 'default'; - - if (!props.nodeTypes[nodeType]) { - console.warn("No node type found for type \"".concat(nodeType, "\". Using fallback type \"default\".")); - } - - var NodeComponent = props.nodeTypes[nodeType] || props.nodeTypes["default"]; - var selected = state.selectedElements.filter(isNode).map(function (e) { - return e.id; - }).includes(d.id); - return React__default.createElement(NodeComponent, { - key: d.id, - id: d.id, - type: d.type, - data: d.data, - xPos: d.__rg.position.x, - yPos: d.__rg.position.y, - onClick: props.onElementClick, - onNodeDragStop: props.onNodeDragStop, - transform: state.transform, - selected: selected, - style: d.style - }); -} - -var NodeRenderer = React.memo(function (props) { - var state = useStoreState(function (s) { - return { - nodes: s.nodes, - transform: s.transform, - selectedElements: s.selectedElements - }; - }); - var transform = state.transform, - nodes = state.nodes; - var transformStyle = { - transform: "translate(".concat(transform[0], "px,").concat(transform[1], "px) scale(").concat(transform[2], ")") - }; - return React__default.createElement("div", { - className: "react-flow__nodes", - style: transformStyle - }, nodes.map(function (d) { - return renderNode(d, props, state); - })); -}); -NodeRenderer.displayName = 'NodeRenderer'; -NodeRenderer.whyDidYouRender = false; - -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 () { +(function () { var hasOwn = {}.hasOwnProperty; @@ -6329,486 +6060,310 @@ var classnames = createCommonjsModule(function (module) { }()); }); -var ConnectionLine = (function (props) { - var _useState = React.useState(null), - _useState2 = _slicedToArray(_useState, 2), - sourceNode = _useState2[0], - setSourceNode = _useState2[1]; - - var hasHandleId = props.connectionSourceId.includes('__'); - var sourceIdSplitted = props.connectionSourceId.split('__'); - var nodeId = sourceIdSplitted[0]; - var handleId = hasHandleId ? sourceIdSplitted[1] : null; - React.useEffect(function () { - setSourceNode(props.nodes.find(function (n) { - return n.id === nodeId; - })); - }, []); - - if (!sourceNode) { - return null; - } +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; + 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) { + return null; + } + var edgeClasses = classnames('react-flow__edge', 'connection', className); + var sourceHandle = handleId ? + sourceNode.__rg.handleBounds.source.find(function (d) { return d.id === handleId; }) : + sourceNode.__rg.handleBounds.source[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 style = props.connectionLineStyle || {}; - var className = classnames('react-flow__edge', 'connection', props.className); - var sourceHandle = handleId ? sourceNode.__rg.handleBounds.source.find(function (d) { - return d.id === handleId; - }) : sourceNode.__rg.handleBounds.source[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 = (props.connectionPositionX - props.transform[0]) * (1 / props.transform[2]); - var targetY = (props.connectionPositionY - props.transform[1]) * (1 / props.transform[2]); - var dAttr = ''; - - if (props.connectionLineType === 'bezier') { - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - dAttr = "M".concat(sourceX, ",").concat(sourceY, " C").concat(sourceX, ",").concat(centerY, " ").concat(targetX, ",").concat(centerY, " ").concat(targetX, ",").concat(targetY); - } else { - dAttr = "M".concat(sourceX, ",").concat(sourceY, " ").concat(targetX, ",").concat(targetY); - } +function getHandlePosition(position, node, handle) { + if (handle === void 0) { handle = null; } + if (!handle) { + switch (position) { + case 'top': return { + x: node.__rg.width / 2, + y: 0 + }; + case 'right': return { + x: node.__rg.width, + y: node.__rg.height / 2 + }; + case 'bottom': return { + x: node.__rg.width / 2, + y: node.__rg.height + }; + case 'left': return { + x: 0, + y: node.__rg.height / 2 + }; + } + return null; + } + switch (position) { + case 'top': return { + x: handle.x + (handle.width / 2), + y: handle.y + }; + case 'right': return { + x: handle.x + handle.width, + y: handle.y + (handle.height / 2) + }; + case 'bottom': return { + x: handle.x + (handle.width / 2), + y: handle.y + handle.height + }; + case '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, state) { + var edgeType = edge.type || 'default'; + var hasSourceHandleId = edge.source.includes('__'); + var hasTargetHandleId = edge.target.includes('__'); + var sourceId = hasSourceHandleId ? edge.source.split('__')[0] : edge.source; + var targetId = hasTargetHandleId ? edge.target.split('__')[0] : edge.target; + var sourceHandleId = hasSourceHandleId ? edge.source.split('__')[1] : null; + var targetHandleId = hasTargetHandleId ? edge.target.split('__')[1] : null; + var sourceNode = state.nodes.find(function (n) { return n.id === sourceId; }); + var targetNode = state.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); + } + 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 : 'bottom'; + var targetPosition = targetHandle ? targetHandle.position : 'top'; + var _a = getEdgePositions(sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition), sourceX = _a.sourceX, sourceY = _a.sourceY, targetX = _a.targetX, targetY = _a.targetY; + var selected = state.selectedElements + .filter(isEdge) + .find(function (elm) { return elm.source === sourceId && elm.target === targetId; }); + return (React__default.createElement(EdgeComponent, { key: edge.id, id: edge.id, type: edge.type, onClick: props.onElementClick, selected: selected, 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 })); +} +var EdgeRenderer = React.memo(function (_a) { + var width = _a.width, height = _a.height, connectionLineStyle = _a.connectionLineStyle, connectionLineType = _a.connectionLineType, rest = __rest(_a, ["width", "height", "connectionLineStyle", "connectionLineType"]); + var state = useStoreState$1(function (s) { return ({ + nodes: s.nodes, + edges: s.edges, + transform: s.transform, + selectedElements: s.selectedElements, + connectionSourceId: s.connectionSourceId, + position: s.connectionPosition + }); }); + if (!width) { + return null; + } + var transform = state.transform, edges = state.edges, nodes = state.nodes, connectionSourceId = state.connectionSourceId, position = state.position; + var transformStyle = "translate(" + transform[0] + "," + transform[1] + ") scale(" + transform[2] + ")"; + 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, __assign({ width: width, height: height, connectionLineStyle: connectionLineStyle, connectionLineType: connectionLineType }, rest), state); }), + connectionSourceId && (React__default.createElement(ConnectionLine, { nodes: nodes, connectionSourceId: connectionSourceId, connectionPositionX: position.x, connectionPositionY: position.y, transform: transform, connectionLineStyle: connectionLineStyle, connectionLineType: connectionLineType }))))); +}); +EdgeRenderer.displayName = 'EdgeRenderer'; - return React__default.createElement("g", { - className: className - }, React__default.createElement("path", _extends$1({ - d: dAttr - }, style))); +var initialRect = { + startX: 0, + startY: 0, + x: 0, + y: 0, + width: 0, + height: 0, + draw: false +}; +function getMousePosition(evt) { + var reactFlowNode = document.querySelector('.react-flow'); + if (!reactFlowNode) { + return false; + } + var containerBounds = reactFlowNode.getBoundingClientRect(); + return { + x: evt.clientX - containerBounds.left, + y: evt.clientY - containerBounds.top, + }; +} +var UserSelection = React.memo(function () { + var selectionPane = React.useRef(null); + var _a = React.useState(initialRect), rect = _a[0], setRect = _a[1]; + var setSelection = useStoreActions$1(function (a) { return a.setSelection; }); + var updateSelection = useStoreActions$1(function (a) { return a.updateSelection; }); + var setNodesSelection = useStoreActions$1(function (a) { return a.setNodesSelection; }); + React.useEffect(function () { + function onMouseDown(evt) { + var mousePos = getMousePosition(evt); + if (!mousePos) { + return false; + } + setRect(function (currentRect) { return (__assign(__assign({}, currentRect), { startX: mousePos.x, startY: mousePos.y, x: mousePos.x, y: mousePos.y, draw: true })); }); + setSelection(true); + } + function onMouseMove(evt) { + setRect(function (currentRect) { + if (!currentRect.draw) { + return currentRect; + } + var mousePos = getMousePosition(evt); + if (!mousePos) { + return currentRect; + } + var negativeX = mousePos.x < currentRect.startX; + var negativeY = mousePos.y < currentRect.startY; + var nextRect = __assign(__assign({}, currentRect), { x: negativeX ? mousePos.x : currentRect.x, y: negativeY ? mousePos.y : currentRect.y, width: negativeX ? currentRect.startX - mousePos.x : mousePos.x - currentRect.startX, height: negativeY ? currentRect.startY - mousePos.y : mousePos.y - currentRect.startY }); + updateSelection(nextRect); + return nextRect; + }); + } + function onMouseUp() { + setRect(function (currentRect) { + setNodesSelection({ isActive: true, selection: currentRect }); + setSelection(false); + return __assign(__assign({}, currentRect), { draw: false }); + }); + } + selectionPane.current.addEventListener('mousedown', onMouseDown); + selectionPane.current.addEventListener('mousemove', onMouseMove); + selectionPane.current.addEventListener('mouseup', onMouseUp); + return function () { + selectionPane.current.removeEventListener('mousedown', onMouseDown); + selectionPane.current.removeEventListener('mousemove', onMouseMove); + selectionPane.current.removeEventListener('mouseup', onMouseUp); + }; + }, []); + return (React__default.createElement("div", { className: "react-flow__selectionpane", ref: selectionPane }, rect.draw && (React__default.createElement("div", { className: "react-flow__selection", style: { + width: rect.width, + height: rect.height, + transform: "translate(" + rect.x + "px, " + rect.y + "px)" + } })))); }); -function getHandlePosition(position, node) { - var handle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; +/** + * 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. + */ - if (!handle) { - switch (position) { - case 'top': - return { - x: node.__rg.width / 2, - y: 0 - }; +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; - case 'right': - return { - x: node.__rg.width, - y: node.__rg.height / 2 - }; +var ReactPropTypesSecret_1 = ReactPropTypesSecret; - case 'bottom': - return { - x: node.__rg.width / 2, - y: node.__rg.height - }; +function emptyFunction() {} +function emptyFunctionWithReset() {} +emptyFunctionWithReset.resetWarningCache = emptyFunction; - case 'left': - return { - x: 0, - y: node.__rg.height / 2 - }; +var factoryWithThrowingShims = function() { + function shim(props, propName, componentName, location, propFullName, secret) { + if (secret === ReactPropTypesSecret_1) { + // It is still safe when called from React. + return; } - } - - switch (position) { - case 'top': - return { - x: handle.x + handle.width / 2, - y: handle.y - }; - - case 'right': - return { - x: handle.x + handle.width, - y: handle.y + handle.height / 2 - }; - - case 'bottom': - return { - x: handle.x + handle.width / 2, - y: handle.y + handle.height - }; - - case '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; - }); - } + 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; + } shim.isRequired = shim; + function getShim() { + return shim; + } // Important! + // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. + var ReactPropTypes = { + array: shim, + bool: shim, + func: shim, + number: shim, + object: shim, + string: shim, + symbol: shim, - return handle; -} + any: shim, + arrayOf: getShim, + element: shim, + elementType: shim, + instanceOf: getShim, + node: shim, + objectOf: getShim, + oneOf: getShim, + oneOfType: getShim, + shape: getShim, + exact: getShim, -function getEdgePositions(_ref) { - var sourceNode = _ref.sourceNode, - sourceHandle = _ref.sourceHandle, - sourcePosition = _ref.sourcePosition, - targetNode = _ref.targetNode, - targetHandle = _ref.targetHandle, - targetPosition = _ref.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 + checkPropTypes: emptyFunctionWithReset, + resetWarningCache: emptyFunction }; -} - -function renderEdge(e, props, state) { - var edgeType = e.type || 'default'; - var hasSourceHandleId = e.source.includes('__'); - var hasTargetHandleId = e.target.includes('__'); - var sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source; - var targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target; - var sourceHandleId = hasSourceHandleId ? e.source.split('__')[1] : null; - var targetHandleId = hasTargetHandleId ? e.target.split('__')[1] : null; - var sourceNode = state.nodes.find(function (n) { - return n.id === sourceId; - }); - var targetNode = state.nodes.find(function (n) { - return n.id === targetId; - }); - - if (!sourceNode) { - throw new Error("couldn't create edge for source id: ".concat(sourceId)); - } - - if (!targetNode) { - throw new Error("couldn't create edge for target id: ".concat(targetId)); - } - - 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 : 'bottom'; - var targetPosition = targetHandle ? targetHandle.position : 'top'; - - var _getEdgePositions = getEdgePositions({ - sourceNode: sourceNode, - sourceHandle: sourceHandle, - sourcePosition: sourcePosition, - targetNode: targetNode, - targetHandle: targetHandle, - targetPosition: targetPosition - }), - sourceX = _getEdgePositions.sourceX, - sourceY = _getEdgePositions.sourceY, - targetX = _getEdgePositions.targetX, - targetY = _getEdgePositions.targetY; - - var selected = state.selectedElements.filter(isEdge).find(function (elm) { - return elm.source === sourceId && elm.target === targetId; - }); - return React__default.createElement(EdgeComponent, { - key: e.id, - id: e.id, - type: e.type, - onClick: props.onElementClick, - selected: selected, - animated: e.animated, - style: e.style, - source: sourceId, - target: targetId, - sourceHandleId: sourceHandleId, - targetHandleId: targetHandleId, - sourceX: sourceX, - sourceY: sourceY, - targetX: targetX, - targetY: targetY, - sourcePosition: sourcePosition, - targetPosition: targetPosition - }); -} -var EdgeRenderer = React.memo(function (props) { - var state = useStoreState(function (s) { - return { - nodes: s.nodes, - edges: s.edges, - transform: s.transform, - selectedElements: s.selectedElements, - connectionSourceId: s.connectionSourceId, - position: s.connectionPosition - }; - }); - var width = props.width, - height = props.height, - connectionLineStyle = props.connectionLineStyle, - connectionLineType = props.connectionLineType; - - if (!width) { - return null; - } - - var transform = state.transform, - edges = state.edges, - nodes = state.nodes, - connectionSourceId = state.connectionSourceId, - position = state.position; - var transformStyle = "translate(".concat(transform[0], ",").concat(transform[1], ") scale(").concat(transform[2], ")"); - 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, state); - }), connectionSourceId && React__default.createElement(ConnectionLine, { - nodes: nodes, - connectionSourceId: connectionSourceId, - connectionPositionX: position.x, - connectionPositionY: position.y, - transform: transform, - connectionLineStyle: connectionLineStyle, - connectionLineType: connectionLineType - }))); -}); -EdgeRenderer.displayName = 'EdgeRenderer'; - -var baseStyles = { - position: 'absolute', - top: 0, - left: 0 -}; - -var createGridLines = function createGridLines(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".concat(i * gap + xOffset, " 0 V").concat(height); - }); - var yValues = Array.from({ - length: lineCountY - }, function (_, i) { - return "M0 ".concat(i * gap + yOffset, " H").concat(width); - }); - return [].concat(_toConsumableArray(xValues), _toConsumableArray(yValues)).join(' '); -}; - -var createGridDots = function createGridDots(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".concat(x, " ").concat(y - size, " l").concat(size, " ").concat(size, " l").concat(-size, " ").concat(size, " l").concat(-size, " ").concat(-size, "z"); - }).join(' '); - }); - return values.join(' '); -}; - -var Grid = React.memo(function (_ref) { - var gap = _ref.gap, - color = _ref.color, - size = _ref.size, - style = _ref.style, - className = _ref.className, - backgroundType = _ref.backgroundType; - - var _useStoreState = useStoreState(function (s) { - return s; - }), - width = _useStoreState.width, - height = _useStoreState.height, - _useStoreState$transf = _slicedToArray(_useStoreState.transform, 3), - x = _useStoreState$transf[0], - y = _useStoreState$transf[1], - scale = _useStoreState$transf[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: _objectSpread2$1({}, baseStyles, {}, style), - className: gridClasses - }, React__default.createElement("path", { - fill: fill, - stroke: stroke, - strokeWidth: size, - d: path - })); -}); -Grid.displayName = 'Grid'; -Grid.propTypes = { - gap: propTypes.number, - color: propTypes.string, - size: propTypes.number, - style: propTypes.object, - className: propTypes.string, - backgroundType: propTypes.oneOf(['lines', 'dots']) -}; -Grid.defaultProps = { - gap: 24, - color: '#aaa', - size: .5, - style: {}, - className: null, - backgroundType: 'dots' -}; + ReactPropTypes.PropTypes = ReactPropTypes; -var bgComponents = { - lines: Grid, - dots: Grid -}; -var BackgroundRenderer = React.memo(function (_ref) { - var backgroundType = _ref.backgroundType, - rest = _objectWithoutProperties(_ref, ["backgroundType"]); - - var BackgroundComponent = bgComponents[backgroundType]; - return React__default.createElement(BackgroundComponent, _extends$1({ - backgroundType: backgroundType - }, rest)); -}); -BackgroundRenderer.displayName = 'BackgroundRenderer'; -BackgroundRenderer.propTypes = { - backgroundType: propTypes.oneOf(['lines', 'dots']) -}; -BackgroundRenderer.defaultProps = { - backgroundType: 'dots' + return ReactPropTypes; }; -var initialRect = { - startX: 0, - startY: 0, - x: 0, - y: 0, - width: 0, - height: 0, - draw: false -}; +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. + */ -function getMousePosition(evt) { - var containerBounds = document.querySelector('.react-flow').getBoundingClientRect(); - return { - x: evt.clientX - containerBounds.left, - y: evt.clientY - containerBounds.top - }; +{ + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = factoryWithThrowingShims(); } - -var UserSelection = React.memo(function () { - var selectionPane = React.useRef(null); - - var _useState = React.useState(initialRect), - _useState2 = _slicedToArray(_useState, 2), - rect = _useState2[0], - setRect = _useState2[1]; - - var setSelection = useStoreActions(function (a) { - return a.setSelection; - }); - var updateSelection = useStoreActions(function (a) { - return a.updateSelection; - }); - var setNodesSelection = useStoreActions(function (a) { - return a.setNodesSelection; - }); - React.useEffect(function () { - function onMouseDown(evt) { - var mousePos = getMousePosition(evt); - setRect(function (currentRect) { - return _objectSpread2$1({}, currentRect, { - startX: mousePos.x, - startY: mousePos.y, - x: mousePos.x, - y: mousePos.y, - draw: true - }); - }); - setSelection(true); - } - - function onMouseMove(evt) { - setRect(function (currentRect) { - if (!currentRect.draw) { - return currentRect; - } - - var mousePos = getMousePosition(evt); - var negativeX = mousePos.x < currentRect.startX; - var negativeY = mousePos.y < currentRect.startY; - - var nextRect = _objectSpread2$1({}, currentRect, { - x: negativeX ? mousePos.x : currentRect.x, - y: negativeY ? mousePos.y : currentRect.y, - width: negativeX ? currentRect.startX - mousePos.x : mousePos.x - currentRect.startX, - height: negativeY ? currentRect.startY - mousePos.y : mousePos.y - currentRect.startY - }); - - updateSelection(nextRect); - return nextRect; - }); - } - - function onMouseUp() { - setRect(function (currentRect) { - setNodesSelection({ - isActive: true, - selection: currentRect - }); - setSelection(false); - return _objectSpread2$1({}, currentRect, { - draw: false - }); - }); - } - - selectionPane.current.addEventListener('mousedown', onMouseDown); - selectionPane.current.addEventListener('mousemove', onMouseMove); - selectionPane.current.addEventListener('mouseup', onMouseUp); - return function () { - selectionPane.current.removeEventListener('mousedown', onMouseDown); - selectionPane.current.removeEventListener('mousemove', onMouseMove); - selectionPane.current.removeEventListener('mouseup', onMouseUp); - }; - }, []); - return React__default.createElement("div", { - className: "react-flow__selectionpane", - ref: selectionPane - }, (rect.draw || rect.fixed) && React__default.createElement("div", { - className: "react-flow__selection", - style: { - width: rect.width, - height: rect.height, - transform: "translate(".concat(rect.x, "px, ").concat(rect.y, "px)") - } - })); }); var shims = createCommonjsModule(function (module, exports) { @@ -8399,984 +7954,871 @@ var DraggableCore = DraggableCore_1.default; reactDraggable.default = default_1; reactDraggable.DraggableCore = DraggableCore; -function getStartPositions(elements) { - return elements.filter(isNode).reduce(function (res, node) { - var startPosition = { - x: node.__rg.position.x || node.position.x, - y: node.__rg.position.y || node.position.x - }; - res[node.id] = startPosition; - return res; - }, {}); -} - -var NodesSelection = React.memo(function () { - var _useState = React.useState({ - x: 0, - y: 0 - }), - _useState2 = _slicedToArray(_useState, 2), - offset = _useState2[0], - setOffset = _useState2[1]; - - var _useState3 = React.useState({}), - _useState4 = _slicedToArray(_useState3, 2), - startPositions = _useState4[0], - setStartPositions = _useState4[1]; - - var state = useStoreState(function (s) { - return { - transform: s.transform, - selectedNodesBbox: s.selectedNodesBbox, - selectedElements: s.selectedElements - }; - }); - var updateNodePos = useStoreActions(function (a) { - return a.updateNodePos; - }); - - var _state$transform = _slicedToArray(state.transform, 3), - x = _state$transform[0], - y = _state$transform[1], - k = _state$transform[2]; - - var position = state.selectedNodesBbox; - - var onStart = function onStart(evt) { - var scaledClient = { - x: evt.clientX * (1 / k), - y: evt.clientY * (1 / k) - }; - var offsetX = scaledClient.x - position.x - x; - var offsetY = scaledClient.y - position.y - y; - var startPositions = getStartPositions(state.selectedElements); - setOffset({ - x: offsetX, - y: offsetY - }); - setStartPositions(startPositions); - }; +function getStartPositions(elements) { + return elements + .filter(isNode) + .reduce(function (res, node) { + var startPosition = { + x: node.__rg.position.x || node.position.x, + y: node.__rg.position.y || node.position.x + }; + res[node.id] = startPosition; + return res; + }, {}); +} +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 + }); }); + var updateNodePos = useStoreActions$1(function (a) { return a.updateNodePos; }); + var _c = state.transform, x = _c[0], y = _c[1], k = _c[2]; + var position = state.selectedNodesBbox; + var onStart = function (evt) { + var scaledClient = { + x: evt.clientX * (1 / k), + y: evt.clientY * (1 / k) + }; + var offsetX = scaledClient.x - position.x - x; + var offsetY = scaledClient.y - position.y - y; + var startPositions = getStartPositions(state.selectedElements); + setOffset({ x: offsetX, y: offsetY }); + setStartPositions(startPositions); + }; + var onDrag = function (evt) { + var scaledClient = { + x: evt.clientX * (1 / k), + y: evt.clientY * (1 / k) + }; + state.selectedElements + .filter(isNode) + .forEach(function (node) { + updateNodePos({ id: node.id, pos: { + x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - x, + y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - y + } }); + }); + }; + return (React__default.createElement("div", { className: "react-flow__nodesselection", style: { + transform: "translate(" + x + "px," + y + "px) scale(" + k + ")" + } }, + React__default.createElement(reactDraggable, { scale: k, 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 onDrag = function onDrag(evt) { - var scaledClient = { - x: evt.clientX * (1 / k), - y: evt.clientY * (1 / k) - }; - state.selectedElements.filter(isNode).forEach(function (node) { - updateNodePos({ - id: node.id, - pos: { - x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - x, - y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - y - } - }); - }); - }; +var GridType; +(function (GridType) { + GridType["Lines"] = "lines"; + GridType["Dots"] = "dots"; +})(GridType || (GridType = {})); + +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 ? null : _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'; - return React__default.createElement("div", { - className: "react-flow__nodesselection", - style: { - transform: "translate(".concat(x, "px,").concat(y, "px) scale(").concat(k, ")") - } - }, React__default.createElement(reactDraggable, { - scale: k, - onStart: onStart, - onDrag: onDrag - }, 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 isInputDOMNode = function (e) { + var target = e.target; + return e && target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(target.nodeName); +}; +var getDimensions = function (node) { return ({ + width: node.offsetWidth, + height: node.offsetHeight +}); }; + +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; }); -function useKeyPress(keyCode) { - var _useState = React.useState(false), - _useState2 = _slicedToArray(_useState, 2), - keyPressed = _useState2[0], - setKeyPressed = _useState2[1]; - - function downHandler(evt) { - if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) { - setKeyPressed(true); - } - } +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 () { + 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 false; + } + updateTransform(event.transform); + onMove(); + }); + if (state.d3Selection) { + // 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 upHandler = function upHandler(evt) { - if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) { - setKeyPressed(false); - } - }; +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]); + return null; +}); - React.useEffect(function () { - window.addEventListener('keydown', downHandler); - window.addEventListener('keyup', upHandler); - return function () { - window.removeEventListener('keydown', downHandler); - window.removeEventListener('keyup', upHandler); - }; - }, []); - return keyPressed; -} +var useElementUpdater = function (elements) { + var state = useStoreState$1(function (s) { return ({ + nodes: s.nodes, + edges: s.edges, + transform: s.transform + }); }); + 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); }); + 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); + }); + var nodesChanged = !fastDeepEqual(state.nodes, nextNodes); + var edgesChanged = !fastDeepEqual(state.edges, edges); + if (nodesChanged) { + setNodes(nextNodes); + } + if (edgesChanged) { + setEdges(edges); + } + }); + return null; +}; -var d3ZoomInstance = zoom().scaleExtent([0.5, 2]).filter(function () { - return !event.button; -}); -function useD3Zoom(zoomPane, onMove, shiftPressed) { - var state = useStoreState(function (s) { - return { - transform: s.transform, - d3Selection: s.d3Selection, - d3Zoom: s.d3Zoom, - edges: s.edged, - d3Initialised: s.d3Initialised, - nodesSelectionActive: s.nodesSelectionActive - }; - }); - var initD3 = useStoreActions(function (actions) { - return actions.initD3; - }); - var updateTransform = useStoreActions(function (actions) { - return actions.updateTransform; - }); - React.useEffect(function () { - 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 false; - } +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; + 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 selectionKeyPressed = useKeyPress(selectionKeyCode); + var onZoomPaneClick = function () { return setNodesSelection({ isActive: false }); }; + var updateDimensions = function () { + 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]); + useGlobalKeyHandler({ onElementsRemove: onElementsRemove, deleteKeyCode: deleteKeyCode }); + useElementUpdater(elements); + return (React__default.createElement("div", { className: "react-flow__renderer", ref: rendererNode }, + showBackground && (React__default.createElement(Grid, { gap: backgroundGap, color: backgroundColor, backgroundType: backgroundType })), + React__default.createElement(NodeRenderer, { nodeTypes: nodeTypes, onElementClick: onElementClick, onNodeDragStop: onNodeDragStop }), + React__default.createElement(EdgeRenderer, { width: state.width, height: state.height, edgeTypes: edgeTypes, onElementClick: onElementClick, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle }), + selectionKeyPressed && React__default.createElement(UserSelection, null), + state.nodesSelectionActive && React__default.createElement(NodesSelection, null), + React__default.createElement("div", { className: "react-flow__zoompane", onClick: onZoomPaneClick, ref: zoomPane }))); +}); +GraphView.displayName = 'GraphView'; - updateTransform(event.transform); - onMove(); - }); +function onMouseDown(evt, nodeId, setSourceId, setPosition, onConnect, isTarget, isValidConnection) { + var reactFlowNode = document.querySelector('.react-flow'); + if (!reactFlowNode) { + return null; + } + var containerBounds = reactFlowNode.getBoundingClientRect(); + var recentHoveredHandle = null; + setPosition({ + x: evt.clientX - containerBounds.left, + y: evt.clientY - containerBounds.top, + }); + setSourceId(nodeId); + function resetRecentHandle() { + if (!recentHoveredHandle) { + return false; + } + 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) { + 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', 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'; - if (state.d3Selection) { - // 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); - } - } +var NodeIdContext = React.createContext(null); +var Provider = NodeIdContext.Provider; +var Consumer = NodeIdContext.Consumer; - return function () { - d3ZoomInstance.on('zoom', null); - }; - }, [shiftPressed]); -} +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 ? '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 useGlobalKeyHandler = (function (_ref) { - var deleteKeyCode = _ref.deleteKeyCode, - onElementsRemove = _ref.onElementsRemove; - var state = useStoreState(function (s) { - return { - selectedElements: s.selectedElements, - edges: s.edges - }; - }); - var setNodesSelection = useStoreActions(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 connectedEdges = getConnectedEdges(state.selectedElements, state.edges); - elementsToRemove = [].concat(_toConsumableArray(state.selectedElements), _toConsumableArray(connectedEdges)); - } +var nodeStyles = { + background: '#ff6060', + padding: 10, + borderRadius: 5, + width: 150 +}; +var DefaultNode = (function (_a) { + var data = _a.data, style = _a.style; + return (React__default.createElement("div", { style: __assign(__assign({}, nodeStyles), style) }, + React__default.createElement(Handle, { type: "target", position: "top" }), + data.label, + React__default.createElement(Handle, { type: "source", position: "bottom" }))); +}); - onElementsRemove(elementsToRemove); - setNodesSelection({ - isActive: false - }); - } - }, [deleteKeyPressed]); - return null; +var nodeStyles$1 = { + background: '#9999ff', + padding: 10, + borderRadius: 5, + width: 150 +}; +var InputNode = (function (_a) { + var data = _a.data, style = _a.style; + return (React__default.createElement("div", { style: __assign(__assign({}, nodeStyles$1), style) }, + data.label, + React__default.createElement(Handle, { type: "source", position: "bottom" }))); }); -var useElementUpdater = function useElementUpdater(_ref) { - var elements = _ref.elements; - var state = useStoreState(function (s) { - return { - nodes: s.nodes, - edges: s.edges, - transform: s.transform - }; - }); - var setNodes = useStoreActions(function (a) { - return a.setNodes; - }); - var setEdges = useStoreActions(function (a) { - return a.setEdges; - }); - React.useEffect(function () { - var nodes = elements.filter(isNode); - var edges = elements.filter(isEdge).map(parseElement); - var nextNodes = nodes.map(function (propNode) { - var existingNode = state.nodes.find(function (n) { - return n.id === propNode.id; - }); +var nodeStyles$2 = { + background: '#55dd99', + padding: 10, + borderRadius: 5, + width: 150 +}; +var OutputNode = (function (_a) { + var data = _a.data, style = _a.style; + return (React__default.createElement("div", { style: __assign(__assign({}, nodeStyles$2), style) }, + React__default.createElement(Handle, { type: "target", position: "top" }), + data.label)); +}); - if (existingNode) { - var data = !fastDeepEqual(existingNode.data, propNode.data) ? _objectSpread2$1({}, existingNode.data, {}, propNode.data) : existingNode.data; - return _objectSpread2$1({}, existingNode, { - data: data +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, }); - } - - return parseElement(propNode, state.transform); - }); - var nodesChanged = !fastDeepEqual(state.nodes, nextNodes); - var edgesChanged = !fastDeepEqual(state.edges, edges); - - if (nodesChanged) { - setNodes(nextNodes); } - - if (edgesChanged) { - setEdges(edges); + 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'), + }); } - }); - return null; }; +exports.ContentRect = ContentRect; -var GraphView = React.memo(function (_ref) { - var nodeTypes = _ref.nodeTypes, - edgeTypes = _ref.edgeTypes, - onMove = _ref.onMove, - onLoad = _ref.onLoad, - onElementClick = _ref.onElementClick, - onNodeDragStop = _ref.onNodeDragStop, - connectionLineType = _ref.connectionLineType, - connectionLineStyle = _ref.connectionLineStyle, - selectionKeyCode = _ref.selectionKeyCode, - onElementsRemove = _ref.onElementsRemove, - deleteKeyCode = _ref.deleteKeyCode, - elements = _ref.elements, - showBackground = _ref.showBackground, - backgroundGap = _ref.backgroundGap, - backgroundColor = _ref.backgroundColor, - backgroundType = _ref.backgroundType, - onConnect = _ref.onConnect; - var zoomPane = React.useRef(); - var rendererNode = React.useRef(); - var state = useStoreState(function (s) { - return { - width: s.width, - height: s.height, - nodes: s.nodes, - edges: s.edges, - d3Initialised: s.d3Initialised, - nodesSelectionActive: s.nodesSelectionActive - }; - }); - var updateSize = useStoreActions(function (actions) { - return actions.updateSize; - }); - var setNodesSelection = useStoreActions(function (actions) { - return actions.setNodesSelection; - }); - var setOnConnect = useStoreActions(function (a) { - return a.setOnConnect; - }); - var selectionKeyPressed = useKeyPress(selectionKeyCode); +}); - var onZoomPaneClick = function onZoomPaneClick() { - return setNodesSelection({ - isActive: false - }); - }; +unwrapExports(ContentRect_1); +var ContentRect_2 = ContentRect_1.ContentRect; - var updateDimensions = function updateDimensions() { - var size = getDimensions(rendererNode.current); - updateSize(size); - }; +var ResizeObservation_1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); - 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 - }); +var ResizeObservation = /** @class */ (function () { + function ResizeObservation(target) { + this.target = target; + this.$$broadcastWidth = this.$$broadcastHeight = 0; } - }, [state.d3Initialised]); - useGlobalKeyHandler({ - onElementsRemove: onElementsRemove, - deleteKeyCode: deleteKeyCode - }); - useElementUpdater({ - elements: elements - }); - return React__default.createElement("div", { - className: "react-flow__renderer", - ref: rendererNode - }, showBackground && React__default.createElement(BackgroundRenderer, { - gap: backgroundGap, - color: backgroundColor, - backgroundType: backgroundType - }), React__default.createElement(NodeRenderer, { - nodeTypes: nodeTypes, - onElementClick: onElementClick, - onNodeDragStop: onNodeDragStop - }), React__default.createElement(EdgeRenderer, { - width: state.width, - height: state.height, - edgeTypes: edgeTypes, - onElementClick: onElementClick, - connectionLineType: connectionLineType, - connectionLineStyle: connectionLineStyle - }), selectionKeyPressed && React__default.createElement(UserSelection, null), state.nodesSelectionActive && React__default.createElement(NodesSelection, null), React__default.createElement("div", { - className: "react-flow__zoompane", - onClick: onZoomPaneClick, - ref: zoomPane - })); + 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; + }); -GraphView.displayName = 'GraphView'; -function _onMouseDown(evt, _ref) { - var nodeId = _ref.nodeId, - setSourceId = _ref.setSourceId, - setPosition = _ref.setPosition, - onConnect = _ref.onConnect, - isTarget = _ref.isTarget, - isValidConnection = _ref.isValidConnection; - var containerBounds = document.querySelector('.react-flow').getBoundingClientRect(); - var recentHoveredHandle = null; - setPosition({ - x: evt.clientX - containerBounds.x, - y: evt.clientY - containerBounds.y - }); - setSourceId(nodeId); +unwrapExports(ResizeObservation_1); +var ResizeObservation_2 = ResizeObservation_1.ResizeObservation; - function resetRecentHandle() { - if (recentHoveredHandle) { - recentHoveredHandle.classList.remove('valid'); - recentHoveredHandle.classList.remove('connecting'); +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); } - } // checks if element below mouse is a handle and returns connection in form of an object { source: 123, target: 312 } + return ResizeObserverEntry; +}()); +exports.ResizeObserverEntry = ResizeObserverEntry; +}); - function checkElementBelowIsValid(evt) { - var elementBelow = document.elementFromPoint(evt.clientX, evt.clientY); - var result = { - elementBelow: elementBelow, - isValid: false, - connection: null, - isHoveringHandle: false +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(); }; - - if (elementBelow && (elementBelow.classList.contains('target') || elementBelow.classList.contains('source'))) { - var connection = 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; + 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."; } - - return result; - } - - function onMouseMove(evt) { - setPosition({ - x: evt.clientX - containerBounds.x, - y: evt.clientY - containerBounds.y - }); - - var _checkElementBelowIsV = checkElementBelowIsValid(evt), - connection = _checkElementBelowIsV.connection, - elementBelow = _checkElementBelowIsV.elementBelow, - isValid = _checkElementBelowIsV.isValid, - isHoveringHandle = _checkElementBelowIsV.isHoveringHandle; - - if (!isHoveringHandle) { - return resetRecentHandle(); + if (typeof (callback) !== 'function') { + return "Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function."; } - - var isOwnHandle = connection.source === connection.target; - - if (!isOwnHandle) { - recentHoveredHandle = elementBelow; - elementBelow.classList.add('connecting'); - elementBelow.classList.toggle('valid', isValid); +} +function targetGuard(functionName, target) { + if (typeof (target) === 'undefined') { + return "Failed to execute '" + functionName + "' on 'ResizeObserver': 1 argument required, but only 0 present."; } - } - - function onMouseUp(evt) { - var _checkElementBelowIsV2 = checkElementBelowIsValid(evt), - connection = _checkElementBelowIsV2.connection, - isValid = _checkElementBelowIsV2.isValid; - - if (isValid) { - onConnect(connection); + if (!(target instanceof window.Element)) { + return "Failed to execute '" + functionName + "' on 'ResizeObserver': parameter 1 is not of type 'Element'."; } - - resetRecentHandle(); - setSourceId(null); - document.removeEventListener('mousemove', onMouseMove); - document.removeEventListener('mouseup', onMouseUp); - } - - document.addEventListener('mousemove', onMouseMove); - document.addEventListener('mouseup', onMouseUp); } - -var BaseHandle = React.memo(function (_ref2) { - var type = _ref2.type, - nodeId = _ref2.nodeId, - onConnect = _ref2.onConnect, - position = _ref2.position, - setSourceId = _ref2.setSourceId, - setPosition = _ref2.setPosition, - className = _ref2.className, - _ref2$id = _ref2.id, - id = _ref2$id === void 0 ? false : _ref2$id, - isValidConnection = _ref2.isValidConnection, - rest = _objectWithoutProperties(_ref2, ["type", "nodeId", "onConnect", "position", "setSourceId", "setPosition", "className", "id", "isValidConnection"]); - - var isTarget = type === 'target'; - var handleClasses = classnames('react-flow__handle', className, position, { - source: !isTarget, - target: isTarget - }); - var nodeIdWithHandleId = id ? "".concat(nodeId, "__").concat(id) : nodeId; - return React__default.createElement("div", _extends$1({ - "data-nodeid": nodeIdWithHandleId, - "data-handlepos": position, - className: handleClasses, - onMouseDown: function onMouseDown(evt) { - return _onMouseDown(evt, { - nodeId: nodeIdWithHandleId, - setSourceId: setSourceId, - setPosition: setPosition, - onConnect: onConnect, - isTarget: isTarget, - isValidConnection: isValidConnection - }); +function findTargetIndex(collection, target) { + for (var index = 0; index < collection.length; index += 1) { + if (collection[index].target === target) { + return index; + } } - }, rest)); -}); -BaseHandle.displayName = 'BaseHandle'; -BaseHandle.whyDidYouRender = false; - -var NodeIdContext = React.createContext(null); -var Provider = NodeIdContext.Provider; -var Consumer = NodeIdContext.Consumer; -Provider.displayName = 'NodeIdProvider'; - -var Handle = React.memo(function (_ref) { - var onConnect = _ref.onConnect, - rest = _objectWithoutProperties(_ref, ["onConnect"]); - - var nodeId = React.useContext(NodeIdContext); - - var _useStoreActions = useStoreActions(function (a) { - return { - setPosition: a.setConnectionPosition, - setSourceId: a.setConnectionSourceId - }; - }), - setPosition = _useStoreActions.setPosition, - setSourceId = _useStoreActions.setSourceId; - - var onConnectAction = useStoreState(function (s) { - return s.onConnect; - }); - - var onConnectExtended = function onConnectExtended(params) { - onConnectAction(params); - onConnect(params); - }; - - return React__default.createElement(BaseHandle, _extends$1({ - nodeId: nodeId, - setPosition: setPosition, - setSourceId: setSourceId, - onConnect: onConnectExtended - }, rest)); -}); -Handle.displayName = 'Handle'; -Handle.propTypes = { - type: propTypes.oneOf(['source', 'target']), - position: propTypes.oneOf(['top', 'right', 'bottom', 'left']), - onConnect: propTypes.func, - isValidConnection: propTypes.func + 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); + } + } + }); + }); }; -Handle.defaultProps = { - type: 'source', - position: 'top', - onConnect: function onConnect() {}, - isValidConnection: function isValidConnection() { - return true; - } +var hasActiveObservations = function () { + return resizeObservers.some(function (ro) { return !!ro.$$activeTargets.length; }); }; - -var nodeStyles = { - background: '#ff6060', - padding: 10, - borderRadius: 5, - width: 150 +var hasSkippedObservations = function () { + return resizeObservers.some(function (ro) { return !!ro.$$skippedTargets.length; }); }; -var DefaultNode = (function (_ref) { - var data = _ref.data, - style = _ref.style; - return React__default.createElement("div", { - style: _objectSpread2$1({}, nodeStyles, {}, style) - }, React__default.createElement(Handle, { - type: "target", - position: "top" - }), data.label, React__default.createElement(Handle, { - type: "source", - position: "bottom" - })); -}); - -var nodeStyles$1 = { - background: '#9999ff', - padding: 10, - borderRadius: 5, - width: 150 +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 InputNode = (function (_ref) { - var data = _ref.data, - style = _ref.style; - return React__default.createElement("div", { - style: _objectSpread2$1({}, nodeStyles$1, {}, style) - }, data.label, React__default.createElement(Handle, { - type: "source", - position: "bottom" - })); -}); - -var nodeStyles$2 = { - background: '#55dd99', - padding: 10, - borderRadius: 5, - width: 150 +var deliverResizeLoopErrorNotification = function () { + var errorEvent = new window.ErrorEvent('ResizeLoopError', { + message: 'ResizeObserver loop completed with undelivered notifications.', + }); + window.dispatchEvent(errorEvent); }; -var OutputNode = (function (_ref) { - var data = _ref.data, - style = _ref.style; - return React__default.createElement("div", { - style: _objectSpread2$1({}, nodeStyles$2, {}, style) - }, React__default.createElement(Handle, { - type: "target", - position: "top" - }), data.label); -}); - -var isHandle = function isHandle(e) { - return e.target.className && e.target.className.includes && (e.target.className.includes('source') || e.target.className.includes('target')); +var calculateDepthForNode = function (target) { + var depth = 0; + while (target.parentNode) { + target = target.parentNode; + depth += 1; + } + return depth; }; - -var hasResizeObserver = !!window.ResizeObserver; - -var getHandleBounds = function getHandleBounds(sel, nodeElement, parentBounds, k) { - var handles = nodeElement.querySelectorAll(sel); - - if (!handles || !handles.length) { - return null; - } - - return [].map.call(handles, 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.split('__'); - var handleId = null; - - if (nodeIdSplitted) { - handleId = nodeIdSplitted.length ? nodeIdSplitted[1] : nodeIdSplitted; +var notificationIteration = function () { + var depth = 0; + gatherActiveObservationsAtDepth(depth); + while (hasActiveObservations()) { + depth = broadcastActiveObservations(); + gatherActiveObservationsAtDepth(depth); + } + if (hasSkippedObservations()) { + deliverResizeLoopErrorNotification(); } - - return _objectSpread2$1({ - id: handleId, - position: handlePosition, - x: (bounds.x - parentBounds.x) * (1 / k), - y: (bounds.y - parentBounds.y) * (1 / k) - }, dimensions); - }); }; - -var _onStart = function onStart(evt, _ref) { - var setOffset = _ref.setOffset, - onClick = _ref.onClick, - id = _ref.id, - type = _ref.type, - data = _ref.data, - position = _ref.position, - transform = _ref.transform; - - if (inInputDOMNode(evt) || isHandle(evt)) { - return false; - } - - var scaledClient = { - x: evt.clientX * (1 / [transform[2]]), - y: evt.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 animationFrameCancelToken; +var startLoop = function () { + if (animationFrameCancelToken) + return; + runLoop(); }; - -var _onDrag = function onDrag(evt, _ref2) { - var setDragging = _ref2.setDragging, - id = _ref2.id, - offset = _ref2.offset, - transform = _ref2.transform; - var scaledClient = { - x: evt.clientX * (1 / transform[2]), - y: evt.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 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 _onStop = function onStop(_ref3) { - var onNodeDragStop = _ref3.onNodeDragStop, - setDragging = _ref3.setDragging, - isDragging = _ref3.isDragging, - id = _ref3.id, - type = _ref3.type, - position = _ref3.position, - data = _ref3.data; - - if (!isDragging) { - return false; - } - - setDragging(false); - onNodeDragStop({ - id: id, - type: type, - position: position, - data: data - }); +var install = function () { + return window.ResizeObserver = ResizeObserver; }; +exports.install = install; -var wrapNode = (function (NodeComponent) { - var NodeWrapper = React.memo(function (props) { - var nodeElement = React.useRef(null); - - var _useState = React.useState({ - x: 0, - y: 0 - }), - _useState2 = _slicedToArray(_useState, 2), - offset = _useState2[0], - setOffset = _useState2[1]; - - var _useState3 = React.useState(false), - _useState4 = _slicedToArray(_useState3, 2), - isDragging = _useState4[0], - setDragging = _useState4[1]; - - var id = props.id, - type = props.type, - data = props.data, - transform = props.transform, - xPos = props.xPos, - yPos = props.yPos, - selected = props.selected, - onClick = props.onClick, - onNodeDragStop = props.onNodeDragStop, - style = props.style; - var position = { - x: xPos, - y: yPos - }; - var nodeClasses = classnames('react-flow__node', { - selected: selected - }); - var nodeStyle = { - zIndex: selected ? 10 : 3, - transform: "translate(".concat(xPos, "px,").concat(yPos, "px)") - }; - - var updateNode = function updateNode() { - var storeState = store.getState(); - var bounds = nodeElement.current.getBoundingClientRect(); - var dimensions = getDimensions(nodeElement.current); - var handleBounds = { - source: getHandleBounds('.source', nodeElement.current, bounds, storeState.transform[2]), - target: getHandleBounds('.target', nodeElement.current, bounds, storeState.transform[2]) - }; - store.dispatch.updateNodeData(_objectSpread2$1({ - id: id - }, dimensions, { - handleBounds: handleBounds - })); - }; - - React.useEffect(function () { - updateNode(); - var resizeObserver = null; - - if (hasResizeObserver) { - resizeObserver = new ResizeObserver(function (entries) { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var entry = _step.value; - updateNode(); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - }); - resizeObserver.observe(nodeElement.current); - } - - return function () { - if (hasResizeObserver && resizeObserver) { - resizeObserver.unobserve(nodeElement.current); - } - }; - }, []); - return React__default.createElement(reactDraggable.DraggableCore, { - onStart: function onStart(evt) { - return _onStart(evt, { - onClick: onClick, - id: id, - type: type, - data: data, - setOffset: setOffset, - transform: transform, - position: position - }); - }, - onDrag: function onDrag(evt) { - return _onDrag(evt, { - setDragging: setDragging, - id: id, - offset: offset, - transform: transform - }); - }, - onStop: function onStop() { - return _onStop({ - onNodeDragStop: onNodeDragStop, - isDragging: isDragging, - setDragging: setDragging, - id: id, - type: type, - position: position, - data: data - }); - }, - scale: transform[2] - }, 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 - })))); - }); - NodeWrapper.displayName = 'NodeWrapper'; - NodeWrapper.whyDidYouRender = false; - return NodeWrapper; }); -function createNodeTypes(nodeTypes) { - var standardTypes = { - input: wrapNode(nodeTypes.input || InputNode), - "default": wrapNode(nodeTypes["default"] || DefaultNode), - output: wrapNode(nodeTypes.output || OutputNode) - }; - 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; - }, {}); - return _objectSpread2$1({}, standardTypes, {}, specialTypes); -} - -var BezierEdge = React.memo(function (_ref) { - var sourceX = _ref.sourceX, - sourceY = _ref.sourceY, - targetX = _ref.targetX, - targetY = _ref.targetY, - sourcePosition = _ref.sourcePosition, - targetPosition = _ref.targetPosition, - _ref$style = _ref.style, - style = _ref$style === void 0 ? {} : _ref$style; - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - var dAttr = "M".concat(sourceX, ",").concat(sourceY, " C").concat(sourceX, ",").concat(centerY, " ").concat(targetX, ",").concat(centerY, " ").concat(targetX, ",").concat(targetY); - - if (['left', 'right'].includes(sourcePosition) && ['left', 'right'].includes(targetPosition)) { - var xOffset = Math.abs(targetX - sourceX) / 2; - var centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset; - dAttr = "M".concat(sourceX, ",").concat(sourceY, " C").concat(centerX, ",").concat(sourceY, " ").concat(centerX, ",").concat(targetY, " ").concat(targetX, ",").concat(targetY); - } else if (['left', 'right'].includes(sourcePosition) || ['left', 'right'].includes(targetPosition)) { - dAttr = "M".concat(sourceX, ",").concat(sourceY, " C").concat(sourceX, ",").concat(targetY, " ").concat(sourceX, ",").concat(targetY, " ").concat(targetX, ",").concat(targetY); - } - - return React__default.createElement("path", _extends$1({}, style, { - d: dAttr - })); +unwrapExports(ResizeObserver_1); +var ResizeObserver_2 = ResizeObserver_1.ResizeObserver; +var ResizeObserver_3 = ResizeObserver_1.install; + +var isHandle = function (evt) { + var target = evt.target; + return (target.className && + target.className.includes && + (target.className.includes('source') || target.className.includes('target'))); +}; +var getHandleBounds = function (selector, nodeElement, parentBounds, k) { + var handles = nodeElement.querySelectorAll(selector); + if (!handles || !handles.length) { + return null; + } + return [].map.call(handles, 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.split('__'); + 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 onStart = function (evt, onClick, id, type, data, setOffset, transform, position) { + if (isInputDOMNode(evt) || isHandle(evt)) { + return false; + } + var scaledClient = { + x: evt.clientX * (1 / transform[2]), + y: evt.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 scaledClient = { + x: evt.clientX * (1 / transform[2]), + y: evt.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; + 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 false; + } + var storeState = store.getState(); + var bounds = nodeElement.current.getBoundingClientRect(); + var dimensions = getDimensions(nodeElement.current); + var handleBounds = { + source: getHandleBounds('.source', nodeElement.current, bounds, storeState.transform[2]), + target: getHandleBounds('.target', nodeElement.current, bounds, storeState.transform[2]) + }; + store.dispatch.updateNodeData(__assign(__assign({ id: id }, dimensions), { handleBounds: handleBounds })); + }; + 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 _ = entries_1[_i]; + updateNode(); + } + }); + resizeObserver_1.observe(nodeElement.current); + return function () { + if (resizeObserver_1 && nodeElement.current) { + resizeObserver_1.unobserve(nodeElement.current); + } + }; + } + }, [nodeElement.current]); + 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] }, + 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 }))))); + }); + NodeWrapper.displayName = 'NodeWrapper'; + return NodeWrapper; }); -var StraightEdge = React.memo(function (props) { - var sourceX = props.sourceX, - sourceY = props.sourceY, - targetX = props.targetX, - targetY = props.targetY, - _props$style = props.style, - style = _props$style === void 0 ? {} : _props$style; - return React__default.createElement("path", _extends$1({}, style, { - d: "M ".concat(sourceX, ",").concat(sourceY, "L ").concat(targetX, ",").concat(targetY) - })); +function createNodeTypes(nodeTypes) { + var standardTypes = { + input: wrapNode((nodeTypes.input || InputNode)), + default: wrapNode((nodeTypes.default || DefaultNode)), + output: wrapNode((nodeTypes.output || OutputNode)) + }; + 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; + }, {}); + 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 ? 'bottom' : _b, _c = _a.targetPosition, targetPosition = _c === void 0 ? '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; + if (['left', 'right'].includes(sourcePosition) && ['left', 'right'].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 (['left', 'right'].includes(sourcePosition) || ['left', 'right'].includes(targetPosition)) { + dAttr = "M" + sourceX + "," + sourceY + " C" + sourceX + "," + targetY + " " + sourceX + "," + targetY + " " + targetX + "," + targetY; + } + return (React__default.createElement("path", __assign({}, style, { d: dAttr }))); }); -var StepEdge = React.memo(function (props) { - var sourceX = props.sourceX, - sourceY = props.sourceY, - targetX = props.targetX, - targetY = props.targetY, - _props$style = props.style, - style = _props$style === void 0 ? {} : _props$style; - var yOffset = Math.abs(targetY - sourceY) / 2; - var centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; - return React__default.createElement("path", _extends$1({}, style, { - d: "M ".concat(sourceX, ",").concat(sourceY, "L ").concat(sourceX, ",").concat(centerY, "L ").concat(targetX, ",").concat(centerY, "L ").concat(targetX, ",").concat(targetY) - })); +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 wrapEdge = (function (EdgeComponent) { - var EdgeWrapper = React.memo(function (props) { - var id = props.id, - source = props.source, - target = props.target, - type = props.type, - animated = props.animated, - selected = props.selected, - onClick = props.onClick; - var edgeClasses = classnames('react-flow__edge', { - selected: selected, - animated: animated - }); - - var onEdgeClick = function onEdgeClick(evt) { - if (inInputDOMNode(evt)) { - return false; - } - - store.dispatch.setSelectedElements({ - id: id, - source: source, - target: target - }); - onClick({ - id: id, - source: source, - target: target, - type: type - }); - }; +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 }))); +}); - return React__default.createElement("g", { - className: edgeClasses, - onClick: onEdgeClick - }, React__default.createElement(EdgeComponent, props)); - }); - EdgeWrapper.displayName = 'EdgeWrapper'; - EdgeWrapper.whyDidYouRender = false; - return EdgeWrapper; +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, rest = __rest(_a, ["id", "source", "target", "type", "animated", "selected", "onClick"]); + var edgeClasses = classnames('react-flow__edge', { selected: selected, animated: animated }); + var onEdgeClick = function (evt) { + if (isInputDOMNode(evt)) { + return false; + } + 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 specialTypes = Object.keys(edgeTypes).filter(function (k) { - return !['default', 'bezier'].includes(k); - }).reduce(function (res, key) { - res[key] = wrapEdge(edgeTypes[key] || BezierEdge); - return res; - }, {}); - return _objectSpread2$1({}, standardTypes, {}, specialTypes); +function createEdgeTypes(edgeTypes) { + var standardTypes = { + default: wrapEdge((edgeTypes.default || BezierEdge)), + straight: wrapEdge((edgeTypes.bezier || StraightEdge)) + }; + 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; + }, {}); + return __assign(__assign({}, standardTypes), specialTypes); } function styleInject(css, ref) { @@ -9409,173 +8851,87 @@ function styleInject(css, ref) { var css = ".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 {stroke-dashoffset: 10}\n}\n\n@keyframes dashdraw {\n from {stroke-dashoffset: 10}\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.react-flow__node {\n position: absolute;\n color: #222;\n font-family: sans-serif;\n font-size: 12px;\n text-align: center;\n cursor: -webkit-grab;\n cursor: grab;\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:hover > * {\n box-shadow: 0 1px 5px 2px rgba(0, 0, 0, 0.08);\n }\n\n.react-flow__node.selected > * {\n box-shadow: 0 0 0 2px #555;\n }\n\n.react-flow__handle {\n position: absolute;\n width: 10px;\n height: 8px;\n background: rgba(255, 255, 255, 0.4);\n cursor: crosshair;\n}\n\n.react-flow__handle.bottom {\n top: auto;\n left: 50%;\n bottom: 0;\n transform: translate(-50%, 0);\n }\n\n.react-flow__handle.top {\n left: 50%;\n top: 0;\n transform: translate(-50%, 0);\n }\n\n.react-flow__handle.left {\n top: 50%;\n left: 0;\n transform: translate(0, -50%);\n\n }\n\n.react-flow__handle.right {\n right: 0;\n top: 50%;\n transform: translate(0, -50%);\n }\n\n.react-flow__nodesselection {\n z-index: 3;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n transform-origin: left top;\n pointer-events: none;\n}\n\n.react-flow__nodesselection-rect {\n position: absolute;\n background: rgba(0, 89, 220, 0.08);\n border: 1px dotted rgba(0, 89, 220, 0.8);\n pointer-events: all;\n }\n\n.react-flow__controls {\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); -var ReactFlow = function ReactFlow(_ref) { - var style = _ref.style, - onElementClick = _ref.onElementClick, - elements = _ref.elements, - children = _ref.children, - nodeTypes = _ref.nodeTypes, - edgeTypes = _ref.edgeTypes, - onLoad = _ref.onLoad, - onMove = _ref.onMove, - onElementsRemove = _ref.onElementsRemove, - onConnect = _ref.onConnect, - onNodeDragStop = _ref.onNodeDragStop, - connectionLineType = _ref.connectionLineType, - connectionLineStyle = _ref.connectionLineStyle, - deleteKeyCode = _ref.deleteKeyCode, - selectionKeyCode = _ref.selectionKeyCode, - showBackground = _ref.showBackground, - backgroundGap = _ref.backgroundGap, - backgroundType = _ref.backgroundType, - backgroundColor = _ref.backgroundColor; - 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 - }), children)); -}; - -ReactFlow.displayName = 'ReactFlow'; -ReactFlow.propTypes = { - onElementClick: propTypes.func, - onElementsRemove: propTypes.func, - onNodeDragStop: propTypes.func, - onConnect: propTypes.func, - onLoad: propTypes.func, - onMove: propTypes.func, - nodeTypes: propTypes.object, - edgeTypes: propTypes.object, - connectionLineType: propTypes.string, - connectionLineStyle: propTypes.object, - deleteKeyCode: propTypes.number, - selectionKeyCode: propTypes.number, - gridColor: propTypes.string, - gridGap: propTypes.number, - showBackground: propTypes.bool, - backgroundType: propTypes.oneOf(['lines', 'dots']) -}; -ReactFlow.defaultProps = { - onElementClick: function onElementClick() {}, - onElementsRemove: function onElementsRemove() {}, - onNodeDragStop: function onNodeDragStop() {}, - onConnect: function onConnect() {}, - onLoad: function onLoad() {}, - onMove: function onMove() {}, - 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: 'dots' +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; + 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 }), + 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 }; -var baseStyle = { - position: 'absolute', - zIndex: 5, - bottom: 10, - right: 10, - width: 200 -}; -var index = (function (_ref) { - var _ref$style = _ref.style, - style = _ref$style === void 0 ? {} : _ref$style, - className = _ref.className, - _ref$bgColor = _ref.bgColor, - bgColor = _ref$bgColor === void 0 ? '#f8f8f8' : _ref$bgColor, - _ref$nodeColor = _ref.nodeColor, - nodeColor = _ref$nodeColor === void 0 ? '#ddd' : _ref$nodeColor; - var canvasNode = React.useRef(null); - var state = useStoreState(function (s) { - return { - width: s.width, - height: s.height, - nodes: s.nodes, - transform: s.transform - }; - }); - var mapClasses = classnames('react-flow__minimap', className); - var nodePositions = state.nodes.map(function (n) { - return n.__rg.position; - }); - var width = style.width || baseStyle.width; - var height = state.height / (state.width || 1) * width; - var bbox = { - x: 0, - y: 0, - width: state.width, - height: state.height - }; - var scaleFactor = width / state.width; - var nodeColorFunc = isFunction(nodeColor) ? nodeColor : function () { - return nodeColor; - }; - React.useEffect(function () { - if (canvasNode) { - var ctx = canvasNode.current.getContext('2d'); - var nodesInside = getNodesInside(state.nodes, bbox, state.transform, true); - ctx.fillStyle = bgColor; - ctx.fillRect(0, 0, width, height); - nodesInside.forEach(function (n) { - var pos = n.__rg.position; - var transformX = state.transform[0]; - var transformY = state.transform[1]; - var x = pos.x * state.transform[2] + transformX; - var y = pos.y * state.transform[2] + transformY; - ctx.fillStyle = nodeColorFunc(n); - ctx.fillRect(x * scaleFactor, y * scaleFactor, n.__rg.width * scaleFactor * state.transform[2], n.__rg.height * scaleFactor * state.transform[2]); - }); - } - }, [nodePositions, state.transform, height]); - return React__default.createElement("canvas", { - style: _objectSpread2$1({}, baseStyle, {}, style, { - height: height - }), - width: width, - height: height, - className: mapClasses, - ref: canvasNode - }); +var baseStyle = { + position: 'absolute', + zIndex: 5, + bottom: 10, + right: 10, + width: 200 +}; +var index = (function (_a) { + var _b = _a.style, style = _b === void 0 ? {} : _b, className = _a.className, _c = _a.bgColor, bgColor = _c === void 0 ? '#f8f8f8' : _c, _d = _a.nodeColor, nodeColor = _d === void 0 ? '#ddd' : _d; + var canvasNode = React.useRef(null); + var state = useStoreState$1(function (s) { return ({ + width: s.width, + height: s.height, + nodes: s.nodes, + transform: s.transform, + }); }); + var mapClasses = classnames('react-flow__minimap', className); + var nodePositions = state.nodes.map(function (n) { return n.__rg.position; }); + var width = +(style.width || baseStyle.width || 0); + var height = (state.height / (state.width || 1)) * width; + var bbox = { x: 0, y: 0, width: state.width, height: state.height }; + var scaleFactor = width / state.width; + var nodeColorFunc = (nodeColor instanceof Function ? nodeColor : function () { return nodeColor; }); + React.useEffect(function () { + if (canvasNode && canvasNode.current) { + var ctx_1 = canvasNode.current.getContext('2d'); + var nodesInside = getNodesInside(state.nodes, bbox, state.transform, true); + ctx_1.fillStyle = bgColor; + ctx_1.fillRect(0, 0, width, height); + nodesInside.forEach(function (n) { + var pos = n.__rg.position; + var transformX = state.transform[0]; + var transformY = state.transform[1]; + var x = (pos.x * state.transform[2]) + transformX; + var y = (pos.y * state.transform[2]) + transformY; + ctx_1.fillStyle = nodeColorFunc(n); + ctx_1.fillRect((x * scaleFactor), (y * scaleFactor), n.__rg.width * scaleFactor * state.transform[2], n.__rg.height * scaleFactor * state.transform[2]); + }); + } + }, [canvasNode.current, nodePositions, state.transform, height]); + return (React__default.createElement("canvas", { style: __assign(__assign(__assign({}, baseStyle), style), { height: height }), width: width, height: height, className: mapClasses, ref: canvasNode })); }); -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); } +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); } var _ref = /*#__PURE__*/ @@ -9584,12 +8940,12 @@ React__default.createElement("path", { }); var SvgPlus = function SvgPlus(props) { - return React__default.createElement("svg", _extends$2({ + return React__default.createElement("svg", _extends$1({ 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); } +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$1 = /*#__PURE__*/ @@ -9598,12 +8954,12 @@ React__default.createElement("path", { }); var SvgMinus = function SvgMinus(props) { - return React__default.createElement("svg", _extends$3({ + return React__default.createElement("svg", _extends$2({ 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); } +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$2 = /*#__PURE__*/ @@ -9612,34 +8968,27 @@ React__default.createElement("path", { }); var SvgFitview = function SvgFitview(props) { - return React__default.createElement("svg", _extends$4({ + return React__default.createElement("svg", _extends$3({ viewBox: "0 0 512 512" }, props), _ref$2); }; -var baseStyle$1 = { - position: 'absolute', - zIndex: 5, - bottom: 10, - left: 10 -}; -var index$1 = (function (_ref) { - var style = _ref.style, - className = _ref.className; - var mapClasses = classnames('react-flow__controls', className); - return React__default.createElement("div", { - className: mapClasses, - style: _objectSpread2$1({}, 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: fitView - }, React__default.createElement(SvgFitview, null))); +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; diff --git a/dist/ReactFlow.js.map b/dist/ReactFlow.js.map index d071593c9..5fd5fcb67 100644 --- a/dist/ReactFlow.js.map +++ b/dist/ReactFlow.js.map @@ -1 +1 @@ -{"version":3,"file":"ReactFlow.js","sources":["../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../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/dist/easy-peasy.esm.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/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","../src/store/actions.js","../src/store/index.js","../src/utils/index.js","../src/utils/graph.js","../src/container/NodeRenderer/index.js","../node_modules/classnames/index.js","../src/components/ConnectionLine/index.js","../src/container/EdgeRenderer/index.js","../src/container/BackgroundRenderer/Grid.js","../src/container/BackgroundRenderer/index.js","../src/components/UserSelection/index.js","../node_modules/react-draggable/build/utils/shims.js","../node_modules/react-draggable/build/utils/getPrefix.js","../node_modules/react-draggable/build/utils/domFns.js","../node_modules/react-draggable/build/utils/positionFns.js","../node_modules/react-draggable/build/utils/log.js","../node_modules/react-draggable/build/DraggableCore.js","../node_modules/react-draggable/build/Draggable.js","../node_modules/react-draggable/index.js","../src/components/NodesSelection/index.js","../src/hooks/useKeyPress.js","../src/hooks/useD3Zoom.js","../src/hooks/useGlobalKeyHandler.js","../src/hooks/useElementUpdater.js","../src/container/GraphView/index.js","../src/components/Handle/BaseHandle.js","../src/contexts/NodeIdContext.js","../src/components/Handle/index.js","../src/components/Nodes/DefaultNode.js","../src/components/Nodes/InputNode.js","../src/components/Nodes/OutputNode.js","../src/components/Nodes/wrapNode.js","../src/container/NodeRenderer/utils.js","../src/components/Edges/BezierEdge.js","../src/components/Edges/StraightEdge.js","../src/components/Edges/StepEdge.js","../src/components/Edges/wrapEdge.js","../src/container/EdgeRenderer/utils.js","../node_modules/style-inject/dist/style-inject.es.js","../src/container/ReactFlow/index.js","../src/plugins/MiniMap/index.js","../src/plugins/Controls/index.js"],"sourcesContent":["/**\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 ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\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 };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\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","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#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","function Similar() {\n\tthis.list = [];\n\tthis.lastItem = undefined;\n\tthis.size = 0;\n\n\treturn this;\n}\n\nSimilar.prototype.get = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn this.lastItem.val;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn this.list[index].val;\n\t}\n\n\treturn undefined;\n};\n\nSimilar.prototype.set = function(key, val) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem.val = val;\n\t\treturn this;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\tthis.list[index].val = val;\n\t\treturn this;\n\t}\n\n\tthis.lastItem = { key: key, val: val };\n\tthis.list.push(this.lastItem);\n\tthis.size++;\n\n\treturn this;\n};\n\nSimilar.prototype.delete = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem = undefined;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.size--;\n\t\treturn this.list.splice(index, 1)[0];\n\t}\n\n\treturn undefined;\n};\n\n\n// important that has() doesn't use get() in case an existing key has a falsy value, in which case has() would return false\nSimilar.prototype.has = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn true;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nSimilar.prototype.forEach = function(callback, thisArg) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tcallback.call(thisArg || this, this.list[i].val, this.list[i].key, this);\n\t}\n};\n\nSimilar.prototype.indexOf = function(key) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tif (this.isEqual(this.list[i].key, key)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nSimilar.prototype.isEqual = function(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n};\n\nmodule.exports = Similar;","module.exports = function(forceSimilar) {\n\tif (typeof Map !== 'function' || forceSimilar) {\n\t\tvar Similar = require('./similar');\n\t\treturn new Similar();\n\t}\n\telse {\n\t\treturn new Map();\n\t}\n}\n","var MapOrSimilar = require('map-or-similar');\n\nmodule.exports = function (limit) {\n\tvar cache = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true'),\n\t\tlru = [];\n\n\treturn function (fn) {\n\t\tvar memoizerific = function () {\n\t\t\tvar currentCache = cache,\n\t\t\t\tnewMap,\n\t\t\t\tfnResult,\n\t\t\t\targsLengthMinusOne = arguments.length - 1,\n\t\t\t\tlruPath = Array(argsLengthMinusOne + 1),\n\t\t\t\tisMemoized = true,\n\t\t\t\ti;\n\n\t\t\tif ((memoizerific.numArgs || memoizerific.numArgs === 0) && memoizerific.numArgs !== argsLengthMinusOne + 1) {\n\t\t\t\tthrow new Error('Memoizerific functions should always be called with the same number of arguments');\n\t\t\t}\n\n\t\t\t// loop through each argument to traverse the map tree\n\t\t\tfor (i = 0; i < argsLengthMinusOne; i++) {\n\t\t\t\tlruPath[i] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[i]\n\t\t\t\t};\n\n\t\t\t\t// climb through the hierarchical map tree until the second-last argument has been found, or an argument is missing.\n\t\t\t\t// if all arguments up to the second-last have been found, this will potentially be a cache hit (determined later)\n\t\t\t\tif (currentCache.has(arguments[i])) {\n\t\t\t\t\tcurrentCache = currentCache.get(arguments[i]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tisMemoized = false;\n\n\t\t\t\t// make maps until last value\n\t\t\t\tnewMap = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true');\n\t\t\t\tcurrentCache.set(arguments[i], newMap);\n\t\t\t\tcurrentCache = newMap;\n\t\t\t}\n\n\t\t\t// we are at the last arg, check if it is really memoized\n\t\t\tif (isMemoized) {\n\t\t\t\tif (currentCache.has(arguments[argsLengthMinusOne])) {\n\t\t\t\t\tfnResult = currentCache.get(arguments[argsLengthMinusOne]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tisMemoized = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the result wasn't memoized, compute it and cache it\n\t\t\tif (!isMemoized) {\n\t\t\t\tfnResult = fn.apply(null, arguments);\n\t\t\t\tcurrentCache.set(arguments[argsLengthMinusOne], fnResult);\n\t\t\t}\n\n\t\t\t// if there is a cache limit, purge any extra results\n\t\t\tif (limit > 0) {\n\t\t\t\tlruPath[argsLengthMinusOne] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[argsLengthMinusOne]\n\t\t\t\t};\n\n\t\t\t\tif (isMemoized) {\n\t\t\t\t\tmoveToMostRecentLru(lru, lruPath);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlru.push(lruPath);\n\t\t\t\t}\n\n\t\t\t\tif (lru.length > limit) {\n\t\t\t\t\tremoveCachedResult(lru.shift());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmemoizerific.wasMemoized = isMemoized;\n\t\t\tmemoizerific.numArgs = argsLengthMinusOne + 1;\n\n\t\t\treturn fnResult;\n\t\t};\n\n\t\tmemoizerific.limit = limit;\n\t\tmemoizerific.wasMemoized = false;\n\t\tmemoizerific.cache = cache;\n\t\tmemoizerific.lru = lru;\n\n\t\treturn memoizerific;\n\t};\n};\n\n// move current args to most recent position\nfunction moveToMostRecentLru(lru, lruPath) {\n\tvar lruLen = lru.length,\n\t\tlruPathLen = lruPath.length,\n\t\tisMatch,\n\t\ti, ii;\n\n\tfor (i = 0; i < lruLen; i++) {\n\t\tisMatch = true;\n\t\tfor (ii = 0; ii < lruPathLen; ii++) {\n\t\t\tif (!isEqual(lru[i][ii].arg, lruPath[ii].arg)) {\n\t\t\t\tisMatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (isMatch) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlru.push(lru.splice(i, 1)[0]);\n}\n\n// remove least recently used cache item and all dead branches\nfunction removeCachedResult(removedLru) {\n\tvar removedLruLen = removedLru.length,\n\t\tcurrentLru = removedLru[removedLruLen - 1],\n\t\ttmp,\n\t\ti;\n\n\tcurrentLru.cacheItem.delete(currentLru.arg);\n\n\t// walk down the tree removing dead branches (size 0) along the way\n\tfor (i = removedLruLen - 2; i >= 0; i--) {\n\t\tcurrentLru = removedLru[i];\n\t\ttmp = currentLru.cacheItem.get(currentLru.arg);\n\n\t\tif (!tmp || !tmp.size) {\n\t\t\tcurrentLru.cacheItem.delete(currentLru.arg);\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nfunction isEqual(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n}","import { isDraft, finishDraft, createDraft, setAutoFreeze } from 'immer-peasy';\nimport React, { createContext, useContext, useRef, useReducer, useLayoutEffect, useEffect, useMemo, useState } from 'react';\nimport { compose, createStore as createStore$1, applyMiddleware } from 'redux';\nimport reduxThunk from 'redux-thunk';\nimport memoizerific from 'memoizerific';\n\nvar StoreContext = createContext();\n\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction createStoreStateHook(Context) {\n return function useStoreState(mapState) {\n var store = useContext(Context);\n var mapStateRef = useRef(mapState);\n var stateRef = useRef();\n var mountedRef = useRef(true);\n var subscriptionMapStateError = useRef();\n\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n if (subscriptionMapStateError.current || mapStateRef.current !== mapState || stateRef.current === undefined) {\n try {\n stateRef.current = mapState(store.getState());\n } catch (err) {\n var errorMessage = \"An error occurred trying to map state in a useStoreState hook: \" + err.message + \".\";\n\n if (subscriptionMapStateError.current) {\n errorMessage += \"\\nThis error may be related to the following error:\\n\" + subscriptionMapStateError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n }\n\n useIsomorphicLayoutEffect(function () {\n mapStateRef.current = mapState;\n subscriptionMapStateError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n var checkMapState = function checkMapState() {\n try {\n var newState = mapStateRef.current(store.getState());\n\n if (newState === stateRef.current) {\n return;\n }\n\n stateRef.current = newState;\n } catch (err) {\n // see https://github.com/reduxjs/react-redux/issues/1179\n // There is a possibility mapState will fail due to stale state or\n // props, therefore we will just track the error and force our\n // component to update. It should then receive the updated state\n subscriptionMapStateError.current = err;\n }\n\n if (mountedRef.current) {\n forceRender({});\n }\n };\n\n var unsubscribe = store.subscribe(checkMapState);\n checkMapState();\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, []);\n return stateRef.current;\n };\n}\nvar useStoreState = createStoreStateHook(StoreContext);\nfunction createStoreActionsHook(Context) {\n return function useStoreActions(mapActions) {\n var store = useContext(Context);\n return mapActions(store.getActions());\n };\n}\nvar useStoreActions = createStoreActionsHook(StoreContext);\nfunction createStoreDispatchHook(Context) {\n return function useStoreDispatch() {\n var store = useContext(Context);\n return store.dispatch;\n };\n}\nvar useStoreDispatch = createStoreDispatchHook(StoreContext);\nfunction useStore() {\n return useContext(StoreContext);\n}\nfunction createTypedHooks() {\n return {\n useStoreActions: useStoreActions,\n useStoreDispatch: useStoreDispatch,\n useStoreState: useStoreState,\n useStore: useStore\n };\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar actionSymbol = '🙈action🙈';\nvar actionOnSymbol = '🙈actionOn🙈';\nvar computedSymbol = '🙈computedSymbol🙈';\nvar reducerSymbol = '🙈reducer🙈';\nvar thunkOnSymbol = '🙈thunkOn🙈';\nvar thunkSymbol = '🙈thunk🙈';\n\nvar debug = function debug(state) {\n if (isDraft(state)) {\n return finishDraft(createDraft(state));\n }\n\n return state;\n};\nvar memo = function memo(fn, cacheSize) {\n return memoizerific(cacheSize)(fn);\n};\nvar actionOn = function actionOn(targetResolver, fn) {\n fn[actionOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar action = function action(fn) {\n fn[actionSymbol] = {};\n return fn;\n};\nvar defaultStateResolvers = [function (state) {\n return state;\n}];\nvar computed = function computed(fnOrStateResolvers, fn) {\n if (typeof fn === 'function') {\n fn[computedSymbol] = {\n stateResolvers: fnOrStateResolvers\n };\n return fn;\n }\n\n fnOrStateResolvers[computedSymbol] = {\n stateResolvers: defaultStateResolvers\n };\n return fnOrStateResolvers;\n};\nvar thunkOn = function thunkOn(targetResolver, fn) {\n fn[thunkOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar thunk = function thunk(fn) {\n fn[thunkSymbol] = {};\n return fn;\n};\nvar reducer = function reducer(fn) {\n fn[reducerSymbol] = {};\n return fn;\n};\n\nvar isStateObject = function isStateObject(x) {\n return x !== null && typeof x === 'object' && !Array.isArray(x) && x.constructor === Object;\n};\nvar get = function get(path, target) {\n return path.reduce(function (acc, cur) {\n return isStateObject(acc) ? acc[cur] : undefined;\n }, target);\n};\nvar set = function set(path, target, value) {\n path.reduce(function (acc, cur, idx) {\n if (idx + 1 === path.length) {\n acc[cur] = value;\n } else {\n acc[cur] = acc[cur] || {};\n }\n\n return acc[cur];\n }, target);\n};\n\nvar newify = function newify(currentPath, currentState, finalValue) {\n if (currentPath.length === 0) {\n return finalValue;\n }\n\n var newState = _extends({}, currentState);\n\n var key = currentPath[0];\n\n if (currentPath.length === 1) {\n newState[key] = finalValue;\n } else {\n newState[key] = newify(currentPath.slice(1), newState[key], finalValue);\n }\n\n return newState;\n};\n\nfunction createStoreInternals(_ref) {\n var disableImmer = _ref.disableImmer,\n initialState = _ref.initialState,\n injections = _ref.injections,\n model = _ref.model,\n reducerEnhancer = _ref.reducerEnhancer,\n references = _ref.references;\n\n function simpleProduce(path, state, fn) {\n if (disableImmer) {\n var _current = get(path, state);\n\n var next = fn(_current);\n\n if (_current !== next) {\n return newify(path, state, next);\n }\n\n return state;\n }\n\n var draft = createDraft(state);\n\n var current = get(path, draft);\n\n fn(current);\n return finishDraft(draft);\n }\n\n var defaultState = initialState;\n var actionCreatorDict = {};\n var actionCreators = {};\n var actionReducersDict = {};\n var actionThunks = {};\n var computedProperties = [];\n var customReducers = [];\n var listenerActionCreators = {};\n var listenerActionMap = {};\n var listenerDefinitions = [];\n var computedState = {\n isInReducer: false,\n currentState: defaultState\n };\n\n var recursiveExtractDefsFromModel = function recursiveExtractDefsFromModel(current, parentPath) {\n return Object.keys(current).forEach(function (key) {\n var value = current[key];\n var path = [].concat(parentPath, [key]);\n var meta = {\n parent: parentPath,\n path: path\n };\n\n var handleValueAsState = function handleValueAsState() {\n var initialParentRef = get(parentPath, initialState);\n\n if (initialParentRef && key in initialParentRef) {\n set(path, defaultState, initialParentRef[key]);\n } else {\n set(path, defaultState, value);\n }\n };\n\n if (typeof value === 'function') {\n if (value[actionSymbol] || value[actionOnSymbol]) {\n var prefix = value[actionSymbol] ? '@action' : '@actionOn';\n var type = prefix + \".\" + path.join('.');\n var actionMeta = value[actionSymbol] || value[actionOnSymbol];\n actionMeta.actionName = key;\n actionMeta.type = type;\n actionMeta.parent = meta.parent;\n actionMeta.path = meta.path; // Action Reducer\n\n actionReducersDict[type] = value; // Action Creator\n\n var actionCreator = function actionCreator(payload) {\n var actionDefinition = {\n type: type,\n payload: payload\n };\n\n if (value[actionOnSymbol] && actionMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(actionMeta.resolvedTargets);\n }\n\n var result = references.dispatch(actionDefinition);\n return result;\n };\n\n actionCreator.type = type;\n actionCreatorDict[type] = actionCreator;\n\n if (key !== 'easyPeasyReplaceState') {\n if (value[actionOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, actionCreator);\n } else {\n set(path, actionCreators, actionCreator);\n }\n }\n } else if (value[thunkSymbol] || value[thunkOnSymbol]) {\n var _prefix = value[thunkSymbol] ? '@thunk' : '@thunkOn';\n\n var _type = _prefix + \".\" + path.join('.');\n\n var thunkMeta = value[thunkSymbol] || value[thunkOnSymbol];\n thunkMeta.actionName = key;\n thunkMeta.type = _type;\n thunkMeta.parent = meta.parent;\n thunkMeta.path = meta.path; // Thunk Action\n\n var thunkHandler = function thunkHandler(payload) {\n var helpers = {\n dispatch: references.dispatch,\n getState: function getState() {\n return get(parentPath, references.getState());\n },\n getStoreActions: function getStoreActions() {\n return actionCreators;\n },\n getStoreState: references.getState,\n injections: injections,\n meta: meta\n };\n\n if (value[thunkOnSymbol] && thunkMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(thunkMeta.resolvedTargets);\n }\n\n return value(get(parentPath, actionCreators), payload, helpers);\n };\n\n set(path, actionThunks, thunkHandler); // Thunk Action Creator\n\n var startType = _type + \"(start)\";\n var successType = _type + \"(success)\";\n var failType = _type + \"(fail)\";\n\n var _actionCreator = function _actionCreator(payload) {\n var dispatchError = function dispatchError(err) {\n references.dispatch({\n type: failType,\n payload: payload,\n error: err\n });\n references.dispatch({\n type: _type,\n payload: payload,\n error: err\n });\n };\n\n var dispatchSuccess = function dispatchSuccess(result) {\n references.dispatch({\n type: successType,\n payload: payload,\n result: result\n });\n references.dispatch({\n type: _type,\n payload: payload,\n result: result\n });\n };\n\n references.dispatch({\n type: startType,\n payload: payload\n });\n\n try {\n var result = references.dispatch(function () {\n return thunkHandler(payload);\n });\n\n if (typeof result === 'object' && typeof result.then === 'function') {\n return result.then(function (resolved) {\n dispatchSuccess(resolved);\n return resolved;\n }).catch(function (err) {\n dispatchError(err);\n throw err;\n });\n }\n\n dispatchSuccess(result);\n return result;\n } catch (err) {\n dispatchError(err);\n throw err;\n }\n };\n\n _actionCreator.type = _type;\n _actionCreator.startType = startType;\n _actionCreator.successType = successType;\n _actionCreator.failType = failType;\n actionCreatorDict[_type] = _actionCreator;\n\n if (value[thunkOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, _actionCreator);\n } else {\n set(path, actionCreators, _actionCreator);\n }\n } else if (value[computedSymbol]) {\n var parent = get(parentPath, defaultState);\n\n var computedMeta = value[computedSymbol];\n var memoisedResultFn = memoizerific(1)(value);\n\n var createComputedProperty = function createComputedProperty(o) {\n Object.defineProperty(o, key, {\n configurable: true,\n enumerable: true,\n get: function get$1() {\n var storeState;\n\n if (computedState.isInReducer) {\n storeState = computedState.currentState;\n } else if (references.getState == null) {\n return undefined;\n } else {\n try {\n storeState = references.getState();\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Invalid access attempt to a computed property');\n }\n\n return undefined;\n }\n }\n\n var state = get(parentPath, storeState);\n\n var inputs = computedMeta.stateResolvers.map(function (resolver) {\n return resolver(state, storeState);\n });\n return memoisedResultFn.apply(void 0, inputs);\n }\n });\n };\n\n createComputedProperty(parent);\n computedProperties.push({\n key: key,\n parentPath: parentPath,\n createComputedProperty: createComputedProperty\n });\n } else if (value[reducerSymbol]) {\n customReducers.push({\n key: key,\n parentPath: parentPath,\n reducer: value\n });\n } else {\n handleValueAsState();\n }\n } else if (isStateObject(value)) {\n var existing = get(path, defaultState);\n\n if (existing == null) {\n set(path, defaultState, {});\n }\n\n recursiveExtractDefsFromModel(value, path);\n } else {\n handleValueAsState();\n }\n });\n };\n\n recursiveExtractDefsFromModel(model, []);\n listenerDefinitions.forEach(function (listenerActionOrThunk) {\n var listenerMeta = listenerActionOrThunk[actionOnSymbol] || listenerActionOrThunk[thunkOnSymbol];\n var targets = listenerMeta.targetResolver(get(listenerMeta.parent, actionCreators), actionCreators);\n var targetTypes = (Array.isArray(targets) ? targets : [targets]).reduce(function (acc, target) {\n if (typeof target === 'function' && target.type && actionCreatorDict[target.type]) {\n acc.push(target.type);\n } else if (typeof target === 'string') {\n acc.push(target);\n }\n\n return acc;\n }, []);\n listenerMeta.resolvedTargets = targetTypes;\n targetTypes.forEach(function (targetType) {\n var listenerReg = listenerActionMap[targetType] || [];\n listenerReg.push(actionCreatorDict[listenerMeta.type]);\n listenerActionMap[targetType] = listenerReg;\n });\n });\n\n var createReducer = function createReducer() {\n var runActionReducerAtPath = function runActionReducerAtPath(state, action, actionReducer, path) {\n return simpleProduce(path, state, function (draft) {\n return actionReducer(draft, action.payload);\n });\n };\n\n var reducerForActions = function reducerForActions(state, action) {\n var actionReducer = actionReducersDict[action.type];\n\n if (actionReducer) {\n var actionMeta = actionReducer[actionSymbol] || actionReducer[actionOnSymbol];\n return runActionReducerAtPath(state, action, actionReducer, actionMeta.parent);\n }\n\n return state;\n };\n\n var reducerForCustomReducers = function reducerForCustomReducers(state, action) {\n return customReducers.reduce(function (acc, _ref2) {\n var parentPath = _ref2.parentPath,\n key = _ref2.key,\n red = _ref2.reducer;\n return simpleProduce(parentPath, acc, function (draft) {\n draft[key] = red(draft[key], action);\n return draft;\n });\n }, state);\n };\n\n var rootReducer = function rootReducer(state, action) {\n var stateAfterActions = reducerForActions(state, action);\n var next = customReducers.length > 0 ? reducerForCustomReducers(stateAfterActions, action) : stateAfterActions;\n\n if (state !== next) {\n computedProperties.forEach(function (_ref3) {\n var parentPath = _ref3.parentPath,\n createComputedProperty = _ref3.createComputedProperty;\n createComputedProperty(get(parentPath, next));\n });\n }\n\n return next;\n };\n\n return rootReducer;\n };\n\n return {\n actionCreatorDict: actionCreatorDict,\n actionCreators: actionCreators,\n computedProperties: computedProperties,\n computedState: computedState,\n defaultState: defaultState,\n listenerActionCreators: listenerActionCreators,\n listenerActionMap: listenerActionMap,\n reducer: reducerEnhancer(createReducer())\n };\n}\n\nfunction createStore(model, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n compose$1 = _options.compose,\n _options$devTools = _options.devTools,\n devTools = _options$devTools === void 0 ? true : _options$devTools,\n _options$disableImmer = _options.disableImmer,\n disableImmer = _options$disableImmer === void 0 ? false : _options$disableImmer,\n _options$enhancers = _options.enhancers,\n enhancers = _options$enhancers === void 0 ? [] : _options$enhancers,\n _options$initialState = _options.initialState,\n initialState = _options$initialState === void 0 ? {} : _options$initialState,\n injections = _options.injections,\n _options$middleware = _options.middleware,\n middleware = _options$middleware === void 0 ? [] : _options$middleware,\n _options$mockActions = _options.mockActions,\n mockActions = _options$mockActions === void 0 ? false : _options$mockActions,\n _options$name = _options.name,\n storeName = _options$name === void 0 ? \"EasyPeasyStore\" : _options$name,\n _options$reducerEnhan = _options.reducerEnhancer,\n reducerEnhancer = _options$reducerEnhan === void 0 ? function (rootReducer) {\n return rootReducer;\n } : _options$reducerEnhan;\n\n var bindReplaceState = function bindReplaceState(modelDef) {\n return _extends({}, modelDef, {\n easyPeasyReplaceState: action(function (state, payload) {\n return payload;\n })\n });\n };\n\n var modelDefinition = bindReplaceState(model);\n var mockedActions = [];\n var references = {};\n\n var bindStoreInternals = function bindStoreInternals(state) {\n if (state === void 0) {\n state = {};\n }\n\n references.internals = createStoreInternals({\n disableImmer: disableImmer,\n initialState: state,\n injections: injections,\n model: modelDefinition,\n reducerEnhancer: reducerEnhancer,\n references: references\n });\n };\n\n bindStoreInternals(initialState);\n\n var listenerActionsMiddleware = function listenerActionsMiddleware() {\n return function (next) {\n return function (action) {\n var result = next(action);\n\n if (action && references.internals.listenerActionMap[action.type] && references.internals.listenerActionMap[action.type].length > 0) {\n var sourceAction = references.internals.actionCreatorDict[action.type];\n references.internals.listenerActionMap[action.type].forEach(function (actionCreator) {\n actionCreator({\n type: sourceAction ? sourceAction.type : action.type,\n payload: action.payload,\n error: action.error,\n result: action.result\n });\n });\n }\n\n return result;\n };\n };\n };\n\n var mockActionsMiddleware = function mockActionsMiddleware() {\n return function () {\n return function (action) {\n if (action != null) {\n mockedActions.push(action);\n }\n\n return undefined;\n };\n };\n };\n\n var computedPropertiesMiddleware = function computedPropertiesMiddleware(store) {\n return function (next) {\n return function (action) {\n references.internals.computedState.currentState = store.getState();\n references.internals.computedState.isInReducer = true;\n return next(action);\n };\n };\n };\n\n var easyPeasyMiddleware = [computedPropertiesMiddleware, reduxThunk].concat(middleware, [listenerActionsMiddleware]);\n\n if (mockActions) {\n easyPeasyMiddleware.push(mockActionsMiddleware);\n }\n\n var composeEnhancers = compose$1 || (devTools && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: storeName\n }) : compose);\n var store = createStore$1(references.internals.reducer, references.internals.defaultState, composeEnhancers.apply(void 0, [applyMiddleware.apply(void 0, easyPeasyMiddleware)].concat(enhancers)));\n store.subscribe(function () {\n references.internals.computedState.isInReducer = false;\n });\n references.dispatch = store.dispatch;\n references.getState = store.getState;\n\n var bindActionCreators = function bindActionCreators() {\n Object.keys(store.dispatch).forEach(function (actionsKey) {\n delete store.dispatch[actionsKey];\n });\n Object.keys(references.internals.actionCreators).forEach(function (key) {\n store.dispatch[key] = references.internals.actionCreators[key];\n });\n };\n\n bindActionCreators();\n\n var rebindStore = function rebindStore(removeKey) {\n var currentState = store.getState();\n\n if (removeKey) {\n delete currentState[removeKey];\n }\n\n bindStoreInternals(store.getState());\n store.replaceReducer(references.internals.reducer);\n references.internals.actionCreatorDict['@action.easyPeasyReplaceState'](references.internals.defaultState);\n bindActionCreators();\n };\n\n return Object.assign(store, {\n addModel: function addModel(key, modelForKey) {\n if (modelDefinition[key] && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model already contains a model definition for \\\"\" + key + \"\\\"\");\n store.removeModel(key);\n }\n\n modelDefinition[key] = modelForKey;\n rebindStore();\n },\n clearMockedActions: function clearMockedActions() {\n mockedActions = [];\n },\n getActions: function getActions() {\n return references.internals.actionCreators;\n },\n getListeners: function getListeners() {\n return references.internals.listenerActionCreators;\n },\n getMockedActions: function getMockedActions() {\n return [].concat(mockedActions);\n },\n reconfigure: function reconfigure(newModel) {\n modelDefinition = bindReplaceState(newModel);\n rebindStore();\n },\n removeModel: function removeModel(key) {\n if (!modelDefinition[key]) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model does not contain a model definition for \\\"\" + key + \"\\\"\");\n }\n\n return;\n }\n\n delete modelDefinition[key];\n rebindStore(key);\n }\n });\n}\n\n/* eslint-disable react/prop-types */\nfunction createContextStore(model, config) {\n var StoreContext = createContext();\n\n function Provider(_ref) {\n var children = _ref.children,\n initialData = _ref.initialData;\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n }\n\n function useStore() {\n return useContext(StoreContext);\n }\n\n return {\n Provider: Provider,\n useStore: useStore,\n useStoreState: createStoreStateHook(StoreContext),\n useStoreActions: createStoreActionsHook(StoreContext),\n useStoreDispatch: createStoreDispatchHook(StoreContext)\n };\n}\n\n/**\n * Some good references on the topic of reinitialisation:\n * - https://github.com/facebook/react/issues/14830\n */\n\nfunction createComponentStore(model, config) {\n return function useLocalStore(initialData) {\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n var previousStateRef = useRef(store.getState());\n\n var _useState = useState(function () {\n return store.getState();\n }),\n currentState = _useState[0],\n setCurrentState = _useState[1];\n\n useEffect(function () {\n return store.subscribe(function () {\n var nextState = store.getState();\n\n if (previousStateRef.current !== nextState) {\n previousStateRef.current = nextState;\n setCurrentState(nextState);\n }\n });\n }, [store]);\n return [currentState, store.getActions()];\n };\n}\n\nvar StoreProvider = function StoreProvider(_ref) {\n var children = _ref.children,\n store = _ref.store;\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n};\n\n/**\n * The auto freeze feature of immer doesn't seem to work in our testing. We have\n * explicitly disabled it to avoid perf issues.\n */\n\nsetAutoFreeze(false);\n\nexport { StoreProvider, action, actionOn, computed, createComponentStore, createContextStore, createStore, createTypedHooks, debug, memo, reducer, thunk, thunkOn, useStore, useStoreActions, useStoreDispatch, useStoreState };\n//# sourceMappingURL=easy-peasy.esm.js.map\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","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 return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","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 if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import { action } from 'easy-peasy';\nimport isEqual from 'fast-deep-equal';\n\nimport { getBoundingBox, getNodesInside, getConnectedEdges } from '../utils/graph';\n\nexport default {\n setOnConnect: action((state, onConnect) => {\n state.onConnect = onConnect;\n }),\n\n setNodes: action((state, nodes) => {\n state.nodes = nodes;\n }),\n\n setEdges: action((state, edges) => {\n state.edges = edges;\n }),\n\n updateNodeData: action((state, { id, ...data }) => {\n state.nodes.forEach((n) => {\n if (n.id === id) {\n n.__rg = {\n ...n.__rg,\n ...data\n };\n }\n });\n }),\n\n updateNodePos: action((state, { id, pos }) => {\n state.nodes.forEach((n) => {\n if (n.id === id) {\n n.__rg = {\n ...n.__rg,\n position: pos\n };\n }\n });\n }),\n\n setSelection: action((state, isActive) => {\n state.selectionActive = isActive;\n }),\n\n setNodesSelection: action((state, { isActive, selection }) => {\n if (!isActive) {\n state.nodesSelectionActive = false;\n state.selectedElements = [];\n\n return;\n }\n const selectedNodes = getNodesInside(state.nodes, selection, state.transform);\n const selectedNodesBbox = getBoundingBox(selectedNodes);\n\n state.selection = selection;\n state.nodesSelectionActive = true;\n state.selectedNodesBbox = selectedNodesBbox;\n state.nodesSelectionActive = true;\n }),\n\n setSelectedElements: action((state, elements) => {\n const selectedElementsArr = Array.isArray(elements) ? elements : [elements];\n const selectedElementsUpdated = !isEqual(selectedElementsArr, state.selectedElements);\n const selectedElements = selectedElementsUpdated ? selectedElementsArr : state.selectedElements;\n\n state.selectedElements = selectedElements;\n }),\n\n updateSelection: action((state, selection) => {\n const selectedNodes = getNodesInside(state.nodes, selection, state.transform);\n const selectedEdges = getConnectedEdges(selectedNodes, state.edges);\n\n const nextSelectedElements = [...selectedNodes, ...selectedEdges];\n const selectedElementsUpdated = !isEqual(nextSelectedElements, state.selectedElements);\n\n state.selection = selection;\n state.selectedElements = selectedElementsUpdated ? nextSelectedElements: state.selectedElements\n }),\n\n updateTransform: action((state, transform) => {\n state.transform = [transform.x, transform.y, transform.k];\n }),\n\n updateSize: action((state, size) => {\n state.width = size.width;\n state.height = size.height;\n }),\n\n initD3: action((state, { zoom, selection }) => {\n state.d3Zoom = zoom;\n state.d3Selection = selection;\n state.d3Initialised = true;\n }),\n\n setConnectionPosition: action((state, position) => {\n state.connectionPosition = position;\n }),\n\n setConnectionSourceId: action((state, sourceId) => {\n state.connectionSourceId = sourceId;\n })\n};","import { createStore } from 'easy-peasy';\n\nimport actions from './actions';\n\nconst store = createStore({\n width: 0,\n height: 0,\n transform: [0, 0, 1],\n nodes: [],\n edges: [],\n selectedElements: [],\n selectedNodesBbox: { x: 0, y: 0, width: 0, height: 0 },\n\n d3Zoom: null,\n d3Selection: null,\n d3Initialised: false,\n\n nodesSelectionActive: false,\n selectionActive: false,\n selection: {},\n\n connectionSourceId: null,\n connectionPosition: { x: 0, y: 0 },\n\n onConnect: () => {},\n\n ...actions\n});\n\nexport default store;\n","export const isFunction = obj => !!(obj && obj.constructor && obj.call && obj.apply);\n\nexport const isDefined = obj => typeof obj !== 'undefined';\n\nexport const inInputDOMNode = e => e && e.target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.nodeName);\n\nexport const getDimensions = (node = {}) => ({\n width: node.offsetWidth,\n height: node.offsetHeight\n});\n","import { zoomIdentity } from 'd3-zoom';\n\nimport store from '../store';\nimport { isDefined } from './index';\n\nexport const isEdge = element => element.source && element.target;\n\nexport const isNode = element => !element.source && !element.target;\n\nexport const getOutgoers = (node, elements) => {\n if (!isNode(node)) {\n return [];\n }\n\n const outgoerIds = elements.filter(e => e.source === node.id).map(e => e.target);\n return elements.filter(e => outgoerIds.includes(e.id));\n};\n\nexport const removeElements = (elementsToRemove, elements) => {\n const nodeIdsToRemove = elementsToRemove.map(n => n.id);\n\n return elements.filter(e => {\n return (\n !nodeIdsToRemove.includes(e.id) &&\n !nodeIdsToRemove.includes(e.target) &&\n !nodeIdsToRemove.includes(e.source)\n );\n });\n};\n\nfunction getEdgeId(params) {\n return `reactflow__edge-${params.source}-${params.target}`;\n}\n\nexport const addEdge = (edgeParams, elements) => {\n if (!edgeParams.source || !edgeParams.target) {\n throw new Error('Can not create edge. An edge needs a source and a target');\n }\n\n return elements.concat({\n ...edgeParams,\n id: isDefined(edgeParams.id) ? edgeParams.id : getEdgeId(edgeParams)\n });\n}\n\nconst pointToRendererPoint = ({ x, y }, transform) => {\n const rendererX = (x - transform[0]) * (1 / [transform[2]]);\n const rendererY = (y - transform[1]) * (1 / [transform[2]]);\n\n return {\n x: rendererX,\n y: rendererY\n };\n};\n\nexport const parseElement = (e, transform) => {\n if (!e.id) {\n throw new Error('All elements (nodes and edges) need to have an id.',)\n }\n\n if (isEdge(e)) {\n return {\n ...e,\n id: e.id.toString(),\n type: e.type || 'default'\n };\n }\n\n return {\n ...e,\n id: e.id.toString(),\n type: e.type || 'default',\n __rg: {\n position: pointToRendererPoint(e.position, transform),\n width: null,\n height: null,\n handleBounds : {}\n }\n };\n};\n\nexport const getBoundingBox = (nodes) => {\n const bbox = nodes.reduce((res, node) => {\n const { position } = node.__rg;\n const x2 = position.x + node.__rg.width;\n const y2 = position.y + node.__rg.height;\n\n if (position.x < res.minX) {\n res.minX = position.x;\n }\n\n if (x2 > res.maxX) {\n res.maxX = x2;\n }\n\n if (position.y < res.minY) {\n res.minY = position.y;\n }\n\n if (y2 > res.maxY) {\n res.maxY = y2;\n }\n\n return res;\n }, {\n minX: Number.MAX_VALUE,\n minY: Number.MAX_VALUE,\n maxX: 0,\n maxY: 0\n });\n\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY\n };\n};\n\nexport const graphPosToZoomedPos = (pos, transform) => {\n return {\n x: (pos.x * transform[2]) + transform[0],\n y: (pos.y * transform[2]) + transform[1]\n };\n}\n\nexport const getNodesInside = (nodes, bbox, transform = [0, 0, 1], partially = false) => {\n return nodes.\n filter(n => {\n const bboxPos = {\n x: (bbox.x - transform[0]) * (1 / transform[2]),\n y: (bbox.y - transform[1]) * (1 / transform[2])\n };\n const bboxWidth = bbox.width * (1 / transform[2]);\n const bboxHeight = bbox.height * (1 / transform[2]);\n const { position, width, height } = n.__rg;\n const nodeWidth = partially ? -width : width;\n const nodeHeight = partially ? 0 : height;\n const offsetX = partially ? width : 0;\n const offsetY = partially ? height : 0;\n\n return (\n (position.x + offsetX > bboxPos.x && (position.x + nodeWidth) < (bboxPos.x + bboxWidth)) &&\n (position.y + offsetY > bboxPos.y && (position.y + nodeHeight) < (bboxPos.y + bboxHeight))\n );\n });\n};\n\nexport const getConnectedEdges = (nodes, edges) => {\n const nodeIds = nodes.map(n => n.id);\n\n return edges.filter(e => {\n const hasSourceHandleId = e.source.includes('__');\n const hasTargetHandleId = e.target.includes('__');\n\n const sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source;\n const targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target;\n\n return nodeIds.includes(sourceId) || nodeIds.includes(targetId);\n });\n};\n\nexport const fitView = ({ padding = 0 } = {}) => {\n const state = store.getState();\n const bounds = getBoundingBox(state.nodes);\n const maxBoundsSize = Math.max(bounds.width, bounds.height);\n const k = Math.min(state.width, state.height) / (maxBoundsSize + (maxBoundsSize * padding));\n const boundsCenterX = bounds.x + (bounds.width / 2);\n const boundsCenterY = bounds.y + (bounds.height / 2);\n const transform = [(state.width / 2) - (boundsCenterX * k), (state.height / 2) - (boundsCenterY * k)];\n const fittedTransform = zoomIdentity.translate(transform[0], transform[1]).scale(k);\n\n state.d3Selection.call(state.d3Zoom.transform, fittedTransform);\n};\n\nexport const zoomIn = () => {\n const state = store.getState();\n state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] + 0.2);\n};\n\nexport const zoomOut = () => {\n const state = store.getState();\n state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] - 0.2);\n};\n","import React, { memo } from 'react';\nimport { useStoreState } from 'easy-peasy';\n\nimport { isNode } from '../../utils/graph';\n\nfunction renderNode(d, props, state) {\n const nodeType = d.type || 'default';\n\n if (!props.nodeTypes[nodeType]) {\n console.warn(`No node type found for type \"${nodeType}\". Using fallback type \"default\".`);\n }\n\n const NodeComponent = props.nodeTypes[nodeType] || props.nodeTypes.default;\n const selected = state.selectedElements\n .filter(isNode)\n .map(e => e.id)\n .includes(d.id);\n\n return (\n \n );\n}\n\nconst NodeRenderer = memo((props) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n transform: s.transform,\n selectedElements: s.selectedElements\n }));\n\n const { transform, nodes } = state;\n const transformStyle = { transform : `translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})` };\n\n return (\n \n {nodes.map(d => renderNode(d, props, state))}\n \n );\n});\n\nNodeRenderer.displayName = 'NodeRenderer';\nNodeRenderer.whyDidYouRender = false;\n\nexport default NodeRenderer;\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import React, { useEffect, useState } from 'react';\nimport cx from 'classnames';\n\nexport default (props) => {\n const [sourceNode, setSourceNode] = useState(null);\n const hasHandleId = props.connectionSourceId.includes('__');\n const sourceIdSplitted = props.connectionSourceId.split('__');\n const nodeId = sourceIdSplitted[0];\n const handleId = hasHandleId ? sourceIdSplitted[1] : null;\n\n useEffect(() => {\n setSourceNode(props.nodes.find(n => n.id === nodeId));\n }, []);\n\n if (!sourceNode) {\n return null;\n }\n\n const style = props.connectionLineStyle || {};\n const className = cx('react-flow__edge', 'connection', props.className);\n\n const sourceHandle = handleId ? sourceNode.__rg.handleBounds.source.find(d => d.id === handleId) : sourceNode.__rg.handleBounds.source[0];\n const sourceHandleX = sourceHandle ? sourceHandle.x + (sourceHandle.width / 2) : sourceNode.__rg.width / 2;\n const sourceHandleY = sourceHandle ? sourceHandle.y + (sourceHandle.height / 2) : sourceNode.__rg.height;\n const sourceX = sourceNode.__rg.position.x + sourceHandleX;\n const sourceY = sourceNode.__rg.position.y + sourceHandleY;\n\n const targetX = (props.connectionPositionX - props.transform[0]) * (1 / props.transform[2]);\n const targetY = (props.connectionPositionY - props.transform[1]) * (1 / props.transform[2]);\n\n let dAttr = '';\n\n if (props.connectionLineType === 'bezier') {\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n dAttr = `M${sourceX},${sourceY} C${sourceX},${centerY} ${targetX},${centerY} ${targetX},${targetY}`;\n } else {\n dAttr = `M${sourceX},${sourceY} ${targetX},${targetY}`;\n }\n\n return (\n \n \n \n );\n};\n","import React, { memo } from 'react';\nimport { useStoreState } from 'easy-peasy';\n\nimport ConnectionLine from '../../components/ConnectionLine';\nimport { isEdge } from '../../utils/graph';\n\nfunction getHandlePosition(position, node, handle = null) {\n if (!handle) {\n switch (position) {\n case 'top': return {\n x: node.__rg.width / 2,\n y: 0\n };\n case 'right': return {\n x: node.__rg.width,\n y: node.__rg.height / 2\n };\n case 'bottom': return {\n x: node.__rg.width / 2,\n y: node.__rg.height\n };\n case 'left': return {\n x: 0,\n y: node.__rg.height / 2\n };\n }\n }\n\n switch (position) {\n case 'top': return {\n x: handle.x + (handle.width / 2),\n y: handle.y\n };\n case 'right': return {\n x: handle.x + handle.width,\n y: handle.y + (handle.height / 2)\n };\n case 'bottom': return {\n x: handle.x + (handle.width / 2),\n y: handle.y + handle.height\n };\n case 'left': return {\n x: handle.x,\n y: handle.y + (handle.height / 2)\n };\n }\n}\n\nfunction getHandle(bounds, handleId) {\n let handle = null;\n\n if (!bounds) {\n return null;\n }\n\n // there is no handleId when there are no multiple handles/ handles with ids\n // so we just pick the first one\n if (bounds.length === 1 || !handleId) {\n handle = bounds[0];\n } else if (handleId) {\n handle = bounds.find(d => d.id === handleId);\n }\n\n return handle;\n}\n\nfunction getEdgePositions({ sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition }) {\n const sourceHandlePos = getHandlePosition(sourcePosition, sourceNode, sourceHandle)\n const sourceX = sourceNode.__rg.position.x + sourceHandlePos.x;\n const sourceY = sourceNode.__rg.position.y + sourceHandlePos.y;\n\n const targetHandlePos = getHandlePosition(targetPosition, targetNode, targetHandle);\n const targetX = targetNode.__rg.position.x + targetHandlePos.x;\n const targetY = targetNode.__rg.position.y + targetHandlePos.y;\n\n return {\n sourceX, sourceY, targetX, targetY\n };\n}\n\nfunction renderEdge(e, props, state) {\n const edgeType = e.type || 'default';\n\n const hasSourceHandleId = e.source.includes('__');\n const hasTargetHandleId = e.target.includes('__');\n\n const sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source;\n const targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target;\n\n const sourceHandleId = hasSourceHandleId ? e.source.split('__')[1] : null;\n const targetHandleId = hasTargetHandleId ? e.target.split('__')[1] : null;\n\n const sourceNode = state.nodes.find(n => n.id === sourceId);\n const targetNode = state.nodes.find(n => n.id === targetId);\n\n if (!sourceNode) {\n throw new Error(`couldn't create edge for source id: ${sourceId}`);\n }\n\n if (!targetNode) {\n throw new Error(`couldn't create edge for target id: ${targetId}`);\n }\n\n const EdgeComponent = props.edgeTypes[edgeType] || props.edgeTypes.default;\n const sourceHandle = getHandle(sourceNode.__rg.handleBounds.source, sourceHandleId);\n const targetHandle = getHandle(targetNode.__rg.handleBounds.target, targetHandleId);\n const sourcePosition = sourceHandle ? sourceHandle.position : 'bottom';\n const targetPosition = targetHandle ? targetHandle.position : 'top';\n\n const { sourceX, sourceY, targetX, targetY } = getEdgePositions({\n sourceNode, sourceHandle, sourcePosition,\n targetNode, targetHandle, targetPosition\n });\n const selected = state.selectedElements\n .filter(isEdge)\n .find(elm => elm.source === sourceId && elm.target === targetId);\n\n return (\n \n );\n}\n\nconst EdgeRenderer = memo((props) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n edges: s.edges,\n transform: s.transform,\n selectedElements: s.selectedElements,\n connectionSourceId: s.connectionSourceId,\n position: s.connectionPosition\n }));\n const {\n width, height, connectionLineStyle, connectionLineType\n } = props;\n\n if (!width) {\n return null;\n }\n\n const { transform, edges, nodes, connectionSourceId, position } = state;\n const transformStyle = `translate(${transform[0]},${transform[1]}) scale(${transform[2]})`;\n\n return (\n \n \n {edges.map(e => renderEdge(e, props, state))}\n {connectionSourceId && (\n \n )}\n \n \n );\n});\n\nEdgeRenderer.displayName = 'EdgeRenderer';\n\nexport default EdgeRenderer;\n","import React, {memo} from 'react';\nimport PropTypes from 'prop-types';\nimport {useStoreState} from 'easy-peasy';\nimport classnames from 'classnames';\n\nconst baseStyles = {\n position: 'absolute',\n top: 0,\n left: 0,\n};\n\nconst createGridLines = (width, height, xOffset, yOffset, gap) => {\n const lineCountX = Math.ceil(width / gap) + 1;\n const lineCountY = Math.ceil(height / gap) + 1;\n\n const xValues = Array.from({length: lineCountX}, (_, i) => `M${i * gap + xOffset} 0 V${height}`);\n const yValues = Array.from({length: lineCountY}, (_, i) => `M0 ${i * gap + yOffset} H${width}`);\n\n return [...xValues, ...yValues].join(' ');\n};\n\nconst createGridDots = (width, height, xOffset, yOffset, gap, size) => {\n const lineCountX = Math.ceil(width / gap) + 1;\n const lineCountY = Math.ceil(height / gap) + 1;\n\n const values = Array.from({length: lineCountX}, (_, col) => {\n const x = col * gap + xOffset;\n return Array.from({length: lineCountY},(_,row)=>{\n const y = row * gap + yOffset;\n return `M${x} ${y-size} l${size} ${size} l${-size} ${size} l${-size} ${-size}z`\n }).join(' ');\n });\n\n return values.join(' ');\n};\n\nconst Grid = memo(({gap, color, size, style, className, backgroundType}) => {\n const {\n width,\n height,\n transform: [x, y, scale],\n } = useStoreState(s => s);\n\n const gridClasses = classnames('react-flow__grid', className);\n const scaledGap = gap * scale;\n\n const xOffset = x % scaledGap;\n const yOffset = y % scaledGap;\n const isLines = backgroundType === 'lines';\n const path = isLines\n ? createGridLines(width, height, xOffset, yOffset, scaledGap)\n : createGridDots(width, height, xOffset, yOffset, scaledGap, size);\n\n const fill = isLines ? 'none' : color;\n const stroke = isLines ? color : 'none';\n\n return (\n \n \n \n );\n});\n\nGrid.displayName = 'Grid';\n\nGrid.propTypes = {\n gap: PropTypes.number,\n color: PropTypes.string,\n size: PropTypes.number,\n style: PropTypes.object,\n className: PropTypes.string,\n backgroundType: PropTypes.oneOf(['lines', 'dots']),\n};\n\nGrid.defaultProps = {\n gap: 24,\n color: '#aaa',\n size: .5,\n style: {},\n className: null,\n backgroundType: 'dots',\n};\n\nexport default Grid;\n","import React, { memo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Grid from './Grid';\n\nconst bgComponents = {\n lines: Grid,\n dots: Grid\n};\n\nconst BackgroundRenderer = memo(({\n backgroundType, ...rest\n}) => {\n const BackgroundComponent = bgComponents[backgroundType];\n\n return (\n \n );\n});\n\nBackgroundRenderer.displayName = 'BackgroundRenderer';\n\nBackgroundRenderer.propTypes = {\n backgroundType: PropTypes.oneOf(['lines', 'dots'])\n};\n\nBackgroundRenderer.defaultProps = {\n backgroundType: 'dots'\n};\n\nexport default BackgroundRenderer;\n","import React, { useEffect, useRef, useState, memo } from 'react';\nimport { useStoreActions } from 'easy-peasy';\n\nconst initialRect = {\n startX: 0,\n startY: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n draw: false\n};\n\nfunction getMousePosition(evt) {\n const containerBounds = document.querySelector('.react-flow').getBoundingClientRect();\n\n return {\n x: evt.clientX - containerBounds.left,\n y: evt.clientY - containerBounds.top,\n };\n}\n\nexport default memo(() => {\n const selectionPane = useRef(null);\n const [rect, setRect] = useState(initialRect);\n const setSelection = useStoreActions(a => a.setSelection);\n const updateSelection = useStoreActions(a => a.updateSelection);\n const setNodesSelection = useStoreActions(a => a.setNodesSelection);\n\n useEffect(() => {\n function onMouseDown(evt) {\n const mousePos = getMousePosition(evt);\n\n setRect((currentRect) => ({\n ...currentRect,\n startX: mousePos.x,\n startY: mousePos.y,\n x: mousePos.x,\n y: mousePos.y,\n draw: true\n }));\n\n setSelection(true);\n }\n\n function onMouseMove(evt) {\n setRect((currentRect) => {\n if (!currentRect.draw) {\n return currentRect;\n }\n\n const mousePos = getMousePosition(evt);\n const negativeX = mousePos.x < currentRect.startX;\n const negativeY = mousePos.y < currentRect.startY;\n const nextRect = {\n ...currentRect,\n x: negativeX ? mousePos.x : currentRect.x,\n y: negativeY ? mousePos.y : currentRect.y,\n width: negativeX ? currentRect.startX - mousePos.x : mousePos.x - currentRect.startX,\n height: negativeY ? currentRect.startY - mousePos.y : mousePos.y - currentRect.startY,\n };\n\n updateSelection(nextRect);\n\n return nextRect;\n });\n }\n\n function onMouseUp() {\n setRect((currentRect) => {\n setNodesSelection({ isActive: true, selection: currentRect });\n setSelection(false);\n\n return {\n ...currentRect,\n draw: false\n };\n });\n }\n\n selectionPane.current.addEventListener('mousedown', onMouseDown);\n selectionPane.current.addEventListener('mousemove', onMouseMove);\n selectionPane.current.addEventListener('mouseup', onMouseUp);\n\n return () => {\n selectionPane.current.removeEventListener('mousedown', onMouseDown);\n selectionPane.current.removeEventListener('mousemove', onMouseMove);\n selectionPane.current.removeEventListener('mouseup', onMouseUp);\n };\n }, []);\n\n return (\n \n {(rect.draw || rect.fixed) && (\n \n )}\n \n );\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findInArray = findInArray;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\nexports.int = int;\nexports.dontSetMe = dontSetMe;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPrefix = getPrefix;\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix(prop\n/*: string*/\n= 'transform')\n/*: string*/\n{\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n const style = window.document.documentElement.style;\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n let out = '';\n let shouldCapitalize = true;\n\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n\n return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = getPrefix();\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.addEvent = addEvent;\nexports.removeEvent = removeEvent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTranslation = getTranslation;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nexports.styleHacks = styleHacks;\nexports.addClassName = addClassName;\nexports.removeClassName = removeClassName;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nlet matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n } // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n\n\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n let node = el;\n\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n} // Get from offsetParent\n\n\nfunction offsetXYFromParent(evt\n/*: {clientX: number, clientY: number}*/\n, offsetParent\n/*: HTMLElement*/\n)\n/*: ControlPosition*/\n{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n return {\n x,\n y\n };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\n\nfunction getTranslation({\n x,\n y\n}\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n let translation = `translate(${x}${unitSuffix},${y}${unitSuffix})`;\n\n if (positionOffset) {\n const defaultX = `${typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix}`;\n const defaultY = `${typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix}`;\n translation = `translate(${defaultX}, ${defaultY})` + translation;\n }\n\n return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n }\n } catch (e) {// probably IE\n }\n}\n\nfunction styleHacks(childStyle\n/*: Object*/\n= {})\n/*: Object*/\n{\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBoundPosition = getBoundPosition;\nexports.snapToGrid = snapToGrid;\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.getControlPosition = getControlPosition;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\n\nvar _shims = require(\"./shims\");\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./domFns\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n } // Keep x and y below right and bottom limits...\n\n\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n const node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent);\n} // Create an data object exposed by 's events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n const state = draggable.state;\n const isStart = !(0, _shims.isNum)(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX,\n deltaY: y - state.lastY,\n lastX: state.lastX,\n lastY: state.lastY,\n x,\n y\n };\n }\n} // Create an data exposed by 's events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n const scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n const node = _reactDom.default.findDOMNode(draggable);\n\n if (!node) {\n throw new Error(': Unmounted during event!');\n } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log(...args) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n}; // Default to mouse events.\n\nlet dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};*/\n\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};*/\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nclass DraggableCore extends _react.default.Component {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN,\n lastY: NaN,\n touchIdentifier: null\n });\n\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e); // Only accept left-clicks.\n\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n\n const {\n ownerDocument\n } = thisNode; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n return;\n } // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n\n\n const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.setState({\n touchIdentifier\n }); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n\n const {\n x,\n y\n } = position; // Create an event object with all the data parents need to make a decision here.\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return; // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n\n this.setState({\n dragging: true,\n lastX: x,\n lastY: y\n }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n\n _defineProperty(this, \"handleDrag\", e => {\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault(); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position; // Snap to grid if prop has been provided\n\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX,\n deltaY = y - this.state.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents')\n /*: any*/\n )\n /*: MouseTouchEvent*/\n ); // I see why this insanity was deprecated\n // $FlowIgnore\n\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n });\n\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.state.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {\n x,\n y\n } = position;\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n }); // Call event handler\n\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n });\n\n _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n\n _defineProperty(this, \"onTouchStart\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onTouchEnd\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStop(e);\n });\n }\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return _react.default.cloneElement(_react.default.Children.only(this.props.children), {\n style: (0, _domFns.styleHacks)(this.props.children.props.style),\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n\n}\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props\n /*: DraggableCoreProps*/\n , propName\n /*: $Keys*/\n ) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {}\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Define \n//\nclass Draggable extends _react.default.Component {\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps({\n position\n }\n /*: DraggableProps*/\n , {\n prevPropsPosition\n }\n /*: DraggableState*/\n ) {\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: { ...position\n }\n };\n }\n\n return null;\n }\n\n constructor(props\n /*: DraggableProps*/\n ) {\n super(props);\n\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState\n /*: $Shape*/\n = {\n x: uiData.x,\n y: uiData.y\n }; // Keep within bounds.\n\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n newState.x += this.state.slackX;\n newState.y += this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n } // Short-circuit if user's callback killed it.\n\n\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n const shouldStop = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldStop === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState\n /*: $Shape*/\n = {\n dragging: false,\n slackX: 0,\n slackY: 0\n }; // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n const controlled = Boolean(this.props.position);\n\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n });\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: { ...props.position\n },\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && _reactDom.default.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n\n componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\n\n render()\n /*: ReactElement*/\n {\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n }; // If this element was SVG, we use the `transform` attribute.\n\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n } // Mark with class while dragging\n\n\n const className = (0, _classnames.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n }); // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n return _react.default.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), _react.default.cloneElement(_react.default.Children.only(children), {\n className: className,\n style: { ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n\n}\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", { // Accepts all props accepts.\n ..._DraggableCore.default.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(Draggable, \"defaultProps\", { ..._DraggableCore.default.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n position: null,\n scale: 1\n});","var Draggable = require('./build/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./build/DraggableCore').default;\n","import React, { useState, memo } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport { isNode } from '../../utils/graph';\n\nfunction getStartPositions(elements) {\n return elements\n .filter(isNode)\n .reduce((res, node) => {\n const startPosition = {\n x: node.__rg.position.x || node.position.x,\n y: node.__rg.position.y || node.position.x\n };\n\n res[node.id] = startPosition;\n\n return res;\n }, {});\n}\n\nexport default memo(() => {\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [startPositions, setStartPositions] = useState({});\n const state = useStoreState(s => ({\n transform: s.transform,\n selectedNodesBbox: s.selectedNodesBbox,\n selectedElements: s.selectedElements\n }));\n const updateNodePos = useStoreActions(a => a.updateNodePos);\n const [x, y, k] = state.transform;\n const position = state.selectedNodesBbox;\n\n const onStart = (evt) => {\n const scaledClient = {\n x: evt.clientX * (1 / k),\n y: evt.clientY * (1 / k)\n };\n const offsetX = scaledClient.x - position.x - x;\n const offsetY = scaledClient.y - position.y - y;\n const startPositions = getStartPositions(state.selectedElements);\n\n setOffset({ x: offsetX, y: offsetY });\n setStartPositions(startPositions);\n };\n\n const onDrag = (evt) => {\n const scaledClient = {\n x: evt.clientX * (1 / k),\n y: evt.clientY * (1 / k)\n };\n\n state.selectedElements.filter(isNode).forEach(node => {\n updateNodePos({ id: node.id, pos: {\n x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - x ,\n y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - y\n }});\n });\n };\n\n return (\n \n \n \n \n \n );\n});\n","import { useState, useEffect } from 'react';\n\nimport { inInputDOMNode } from '../utils';\n\nexport default function useKeyPress(keyCode) {\n const [keyPressed, setKeyPressed] = useState(false);\n\n function downHandler(evt) {\n if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) {\n setKeyPressed(true);\n }\n }\n\n const upHandler = (evt) => {\n if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) {\n setKeyPressed(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', downHandler);\n window.addEventListener('keyup', upHandler);\n return () => {\n window.removeEventListener('keydown', downHandler);\n window.removeEventListener('keyup', upHandler);\n };\n }, []);\n\n return keyPressed;\n}\n","import { useEffect } from 'react';\nimport * as d3Zoom from 'd3-zoom';\nimport { select, event } from 'd3-selection';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nconst d3ZoomInstance = d3Zoom\n .zoom()\n .scaleExtent([0.5, 2])\n .filter(() => !event.button);\n\nexport default function useD3Zoom(zoomPane, onMove, shiftPressed) {\n const state = useStoreState(s => ({\n transform: s.transform,\n d3Selection: s.d3Selection,\n d3Zoom: s.d3Zoom,\n edges: s.edged,\n d3Initialised: s.d3Initialised,\n nodesSelectionActive: s.nodesSelectionActive\n }));\n\n const initD3 = useStoreActions(actions => actions.initD3);\n const updateTransform = useStoreActions(actions => actions.updateTransform);\n\n useEffect(() => {\n const selection = select(zoomPane.current).call(d3ZoomInstance);\n initD3({ zoom: d3ZoomInstance, selection });\n }, []);\n\n useEffect(() => {\n if (shiftPressed) {\n d3ZoomInstance.on('zoom', null);\n } else {\n d3ZoomInstance.on('zoom', () => {\n if (event.sourceEvent && event.sourceEvent.target !== zoomPane.current) {\n return false;\n }\n\n updateTransform(event.transform);\n\n onMove();\n });\n\n if (state.d3Selection) {\n // we need to restore the graph transform otherwise d3 zoom transform and graph transform are not synced\n const graphTransform = d3Zoom.zoomIdentity\n .translate(state.transform[0], state.transform[1])\n .scale(state.transform[2]);\n\n state.d3Selection.call(state.d3Zoom.transform, graphTransform);\n }\n }\n\n return () => {\n d3ZoomInstance.on('zoom', null);\n };\n }, [shiftPressed]);\n}\n","import { useEffect } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport useKeyPress from './useKeyPress';\nimport { isEdge, getConnectedEdges } from '../utils/graph';\n\nexport default ({ deleteKeyCode, onElementsRemove }) => {\n const state = useStoreState(s => ({ selectedElements: s.selectedElements, edges: s.edges }))\n const setNodesSelection = useStoreActions(a => a.setNodesSelection);\n const deleteKeyPressed = useKeyPress(deleteKeyCode);\n\n useEffect(() => {\n if (deleteKeyPressed && state.selectedElements.length) {\n let elementsToRemove = state.selectedElements;\n\n // we also want to remove the edges if only one node is selected\n if (state.selectedElements.length === 1 && !isEdge(state.selectedElements[0])) {\n const connectedEdges = getConnectedEdges(state.selectedElements, state.edges);\n elementsToRemove = [...state.selectedElements, ...connectedEdges];\n }\n\n onElementsRemove(elementsToRemove);\n setNodesSelection({ isActive: false });\n }\n }, [deleteKeyPressed])\n\n return null;\n};\n","import { useEffect } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\nimport isEqual from 'fast-deep-equal';\n\nimport { parseElement, isNode, isEdge } from '../utils/graph';\n\nconst useElementUpdater = ({ elements }) => {\n const state = useStoreState(s => ({\n nodes: s.nodes,\n edges: s.edges,\n transform: s.transform\n }));\n\n const setNodes = useStoreActions(a => a.setNodes);\n const setEdges = useStoreActions(a => a.setEdges);\n\n useEffect(() => {\n const nodes = elements.filter(isNode);\n const edges = elements.filter(isEdge).map(parseElement);\n\n const nextNodes = nodes.map(propNode => {\n const existingNode = state.nodes.find(n => n.id === propNode.id);\n\n if (existingNode) {\n const data = !isEqual(existingNode.data, propNode.data) ?\n { ...existingNode.data, ...propNode.data } : existingNode.data;\n\n return {\n ...existingNode,\n data\n };\n }\n\n return parseElement(propNode, state.transform);\n });\n\n const nodesChanged = !isEqual(state.nodes, nextNodes);\n const edgesChanged = !isEqual(state.edges, edges);\n\n if (nodesChanged) {\n setNodes(nextNodes);\n }\n\n if (edgesChanged) {\n setEdges(edges);\n }\n });\n\n return null;\n};\n\nexport default useElementUpdater;\n","import React, { useEffect, useRef, memo } from 'react';\nimport { useStoreState, useStoreActions } from 'easy-peasy';\n\nimport NodeRenderer from '../NodeRenderer';\nimport EdgeRenderer from '../EdgeRenderer';\nimport BackgroundRenderer from '../BackgroundRenderer';\nimport UserSelection from '../../components/UserSelection';\nimport NodesSelection from '../../components/NodesSelection';\nimport useKeyPress from '../../hooks/useKeyPress';\nimport useD3Zoom from '../../hooks/useD3Zoom';\nimport useGlobalKeyHandler from '../../hooks/useGlobalKeyHandler';\nimport useElementUpdater from '../../hooks/useElementUpdater'\nimport { getDimensions } from '../../utils';\nimport { fitView, zoomIn, zoomOut } from '../../utils/graph';\n\nconst GraphView = memo(({\n nodeTypes, edgeTypes, onMove, onLoad,\n onElementClick, onNodeDragStop, connectionLineType, connectionLineStyle,\n selectionKeyCode, onElementsRemove, deleteKeyCode, elements,\n showBackground, backgroundGap, backgroundColor, backgroundType,\n onConnect\n}) => {\n const zoomPane = useRef();\n const rendererNode = useRef();\n const state = useStoreState(s => ({\n width: s.width,\n height: s.height,\n nodes: s.nodes,\n edges: s.edges,\n d3Initialised: s.d3Initialised,\n nodesSelectionActive: s.nodesSelectionActive\n }));\n const updateSize = useStoreActions(actions => actions.updateSize);\n const setNodesSelection = useStoreActions(actions => actions.setNodesSelection);\n const setOnConnect = useStoreActions(a => a.setOnConnect);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n\n const onZoomPaneClick = () => setNodesSelection({ isActive: false });\n\n const updateDimensions = () => {\n const size = getDimensions(rendererNode.current);\n updateSize(size);\n };\n\n useEffect(() => {\n updateDimensions();\n setOnConnect(onConnect);\n window.onresize = updateDimensions;\n\n return () => {\n window.onresize = null;\n };\n }, []);\n\n useD3Zoom(zoomPane, onMove, selectionKeyPressed);\n\n useEffect(() => {\n if (state.d3Initialised) {\n onLoad({\n fitView,\n zoomIn,\n zoomOut\n });\n }\n }, [state.d3Initialised]);\n\n useGlobalKeyHandler({ onElementsRemove, deleteKeyCode });\n useElementUpdater({ elements });\n\n return (\n
\n {showBackground && (\n \n )}\n \n \n {selectionKeyPressed && }\n {state.nodesSelectionActive && }\n \n
\n );\n});\n\nGraphView.displayName = 'GraphView';\n\nexport default GraphView;\n","import React, { memo } from 'react';\nimport cx from 'classnames';\n\nfunction onMouseDown(evt, { nodeId, setSourceId, setPosition, onConnect, isTarget, isValidConnection }) {\n const containerBounds = document.querySelector('.react-flow').getBoundingClientRect();\n let recentHoveredHandle = null;\n\n setPosition({\n x: evt.clientX - containerBounds.x,\n y: evt.clientY - containerBounds.y,\n });\n setSourceId(nodeId);\n\n function resetRecentHandle() {\n if (recentHoveredHandle) {\n recentHoveredHandle.classList.remove('valid');\n recentHoveredHandle.classList.remove('connecting');\n }\n }\n\n // checks if element below mouse is a handle and returns connection in form of an object { source: 123, target: 312 }\n function checkElementBelowIsValid(evt) {\n const elementBelow = document.elementFromPoint(evt.clientX, evt.clientY);\n const result = {\n elementBelow,\n isValid: false,\n connection: null,\n isHoveringHandle: false\n };\n\n if (elementBelow && (elementBelow.classList.contains('target') || elementBelow.classList.contains('source'))) {\n let connection = null;\n\n if (isTarget) {\n const sourceId = elementBelow.getAttribute('data-nodeid');\n connection = { source: sourceId, target: nodeId };\n } else {\n const targetId = elementBelow.getAttribute('data-nodeid');\n connection = { source: nodeId, target: targetId };\n }\n\n const isValid = isValidConnection(connection);\n\n result.connection = connection;\n result.isValid = isValid;\n result.isHoveringHandle = true;\n }\n\n return result;\n }\n\n function onMouseMove(evt) {\n setPosition({\n x: evt.clientX - containerBounds.x,\n y: evt.clientY - containerBounds.y,\n });\n\n const { connection, elementBelow, isValid, isHoveringHandle } = checkElementBelowIsValid(evt);\n\n if (!isHoveringHandle) {\n return resetRecentHandle();\n }\n\n const isOwnHandle = connection.source === connection.target;\n\n if (!isOwnHandle) {\n recentHoveredHandle = elementBelow;\n elementBelow.classList.add('connecting');\n elementBelow.classList.toggle('valid', isValid);\n }\n }\n\n function onMouseUp(evt) {\n const { connection, isValid } = checkElementBelowIsValid(evt);\n\n if (isValid) {\n onConnect(connection);\n }\n\n resetRecentHandle();\n setSourceId(null);\n\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n }\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp)\n}\n\nconst BaseHandle = memo(({\n type, nodeId, onConnect, position,\n setSourceId, setPosition, className,\n id = false, isValidConnection, ...rest\n}) => {\n const isTarget = type === 'target';\n const handleClasses = cx(\n 'react-flow__handle',\n className,\n position,\n { source: !isTarget, target: isTarget }\n );\n\n const nodeIdWithHandleId = id ? `${nodeId}__${id}` : nodeId;\n\n return (\n onMouseDown(evt, {\n nodeId: nodeIdWithHandleId, setSourceId, setPosition,\n onConnect, isTarget, isValidConnection\n })}\n {...rest}\n />\n );\n});\n\nBaseHandle.displayName = 'BaseHandle';\nBaseHandle.whyDidYouRender = false;\n\nexport default BaseHandle;\n","import { createContext } from 'react';\n\nexport const NodeIdContext = createContext(null);\nexport const Provider = NodeIdContext.Provider;\nexport const Consumer = NodeIdContext.Consumer;\n\nProvider.displayName = 'NodeIdProvider';\n\nexport default NodeIdContext;\n","import React, { memo, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { useStoreActions, useStoreState } from 'easy-peasy';\n\nimport BaseHandle from './BaseHandle';\nimport NodeIdContext from '../../contexts/NodeIdContext'\n\nconst Handle = memo(({ onConnect, ...rest }) => {\n const nodeId = useContext(NodeIdContext);\n const { setPosition, setSourceId } = useStoreActions(a => ({\n setPosition: a.setConnectionPosition,\n setSourceId: a.setConnectionSourceId\n }));\n const onConnectAction = useStoreState(s => s.onConnect);\n const onConnectExtended = (params) => {\n onConnectAction(params);\n onConnect(params);\n };\n\n return (\n \n );\n});\n\nHandle.displayName = 'Handle';\n\nHandle.propTypes = {\n type: PropTypes.oneOf(['source', 'target']),\n position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n onConnect: PropTypes.func,\n isValidConnection: PropTypes.func\n};\n\nHandle.defaultProps = {\n type: 'source',\n position: 'top',\n onConnect: () => {},\n isValidConnection: () => true\n};\n\nexport default Handle;\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#ff6060',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n \n {data.label}\n \n
\n);\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#9999ff',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n {data.label}\n \n
\n);\n","import React from 'react';\n\nimport Handle from '../../components/Handle';\n\nconst nodeStyles = {\n background: '#55dd99',\n padding: 10,\n borderRadius: 5,\n width: 150\n};\n\nexport default ({ data, style }) => (\n
\n \n {data.label}\n
\n);\n","import React, { useEffect, useRef, useState, memo } from 'react';\nimport ReactDraggable from 'react-draggable';\nimport cx from 'classnames';\n\nimport { getDimensions, inInputDOMNode } from '../../utils';\nimport { Provider } from '../../contexts/NodeIdContext';\nimport store from '../../store';\n\nconst isHandle = e => (\n e.target.className &&\n e.target.className.includes &&\n (e.target.className.includes('source') || e.target.className.includes('target'))\n);\n\nconst hasResizeObserver = !!window.ResizeObserver;\n\nconst getHandleBounds = (sel, nodeElement, parentBounds, k) => {\n const handles = nodeElement.querySelectorAll(sel);\n\n if (!handles || !handles.length) {\n return null;\n }\n\n return [].map.call(handles, (handle) => {\n const bounds = handle.getBoundingClientRect();\n const dimensions = getDimensions(handle);\n const nodeIdAttr = handle.getAttribute('data-nodeid');\n const handlePosition = handle.getAttribute('data-handlepos');\n const nodeIdSplitted = nodeIdAttr.split('__');\n\n let handleId = null;\n\n if (nodeIdSplitted) {\n handleId = nodeIdSplitted.length ? nodeIdSplitted[1] : nodeIdSplitted;\n }\n\n return {\n id: handleId,\n position: handlePosition,\n x: (bounds.x - parentBounds.x) * (1 / k),\n y: (bounds.y - parentBounds.y) * (1 / k),\n ...dimensions\n };\n });\n};\n\nconst onStart = (evt, { setOffset, onClick, id, type, data, position, transform }) => {\n if (inInputDOMNode(evt) || isHandle(evt)) {\n return false;\n }\n\n const scaledClient = {\n x: evt.clientX * (1 / [transform[2]]),\n y: evt.clientY * (1 / [transform[2]])\n };\n const offsetX = scaledClient.x - position.x - transform[0];\n const offsetY = scaledClient.y - position.y - transform[1];\n const node = { id, type, position, data };\n\n store.dispatch.setSelectedElements({ id, type });\n setOffset({ x: offsetX, y: offsetY });\n onClick(node);\n};\n\nconst onDrag = (evt, { setDragging, id, offset, transform }) => {\n const scaledClient = {\n x: evt.clientX * (1 / transform[2]),\n y: evt.clientY * (1 / transform[2])\n };\n\n setDragging(true);\n store.dispatch.updateNodePos({ id, pos: {\n x: scaledClient.x - transform[0] - offset.x,\n y: scaledClient.y - transform[1] - offset.y\n }});\n};\n\nconst onStop = ({ onNodeDragStop, setDragging, isDragging, id, type, position, data }) => {\n if (!isDragging) {\n return false;\n }\n\n setDragging(false);\n onNodeDragStop({\n id, type, position, data\n });\n};\n\nexport default NodeComponent => {\n const NodeWrapper = memo((props) => {\n const nodeElement = useRef(null);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n const [isDragging, setDragging] = useState(false);\n const {\n id, type, data, transform, xPos, yPos, selected,\n onClick, onNodeDragStop, style\n } = props;\n\n const position = { x: xPos, y: yPos };\n const nodeClasses = cx('react-flow__node', { selected });\n const nodeStyle = { zIndex: selected ? 10 : 3, transform: `translate(${xPos}px,${yPos}px)` };\n\n const updateNode = () => {\n const storeState = store.getState()\n const bounds = nodeElement.current.getBoundingClientRect();\n const dimensions = getDimensions(nodeElement.current);\n const handleBounds = {\n source: getHandleBounds('.source', nodeElement.current, bounds, storeState.transform[2]),\n target: getHandleBounds('.target', nodeElement.current, bounds, storeState.transform[2])\n };\n store.dispatch.updateNodeData({ id, ...dimensions, handleBounds });\n }\n\n useEffect(() => {\n updateNode();\n\n let resizeObserver = null;\n\n if (hasResizeObserver) {\n resizeObserver = new ResizeObserver(entries => {\n for (let entry of entries) {\n updateNode();\n }\n });\n\n resizeObserver.observe(nodeElement.current);\n }\n\n return () => {\n if (hasResizeObserver && resizeObserver) {\n resizeObserver.unobserve(nodeElement.current);\n }\n }\n }, []);\n\n return (\n onStart(evt, { onClick, id, type, data, setOffset, transform, position })}\n onDrag={evt => onDrag(evt, { setDragging, id, offset, transform })}\n onStop={() => onStop({ onNodeDragStop, isDragging, setDragging, id, type, position, data })}\n scale={transform[2]}\n >\n \n \n \n \n \n \n );\n });\n\n NodeWrapper.displayName = 'NodeWrapper';\n NodeWrapper.whyDidYouRender = false;\n\n return NodeWrapper;\n};\n","import DefaultNode from '../../components/Nodes/DefaultNode';\nimport InputNode from '../../components/Nodes/InputNode';\nimport OutputNode from '../../components/Nodes/OutputNode';\nimport wrapNode from '../../components/Nodes/wrapNode';\n\nexport function createNodeTypes(nodeTypes) {\n const standardTypes = {\n input: wrapNode(nodeTypes.input || InputNode),\n default: wrapNode(nodeTypes.default || DefaultNode),\n output: wrapNode(nodeTypes.output || OutputNode)\n };\n\n const specialTypes = Object\n .keys(nodeTypes)\n .filter(k => !['input', 'default', 'output'].includes(k))\n .reduce((res, key) => {\n res[key] = wrapNode(nodeTypes[key] || DefaultNode);\n\n return res;\n }, {});\n\n return {\n ...standardTypes,\n ...specialTypes\n };\n}\n","import React, { memo } from 'react';\n\nexport default memo(({\n sourceX, sourceY, targetX, targetY,\n sourcePosition, targetPosition, style = {}\n}) => {\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n let dAttr = `M${sourceX},${sourceY} C${sourceX},${centerY} ${targetX},${centerY} ${targetX},${targetY}`;\n\n if (['left', 'right'].includes(sourcePosition) && ['left', 'right'].includes(targetPosition)) {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n\n dAttr = `M${sourceX},${sourceY} C${centerX},${sourceY} ${centerX},${targetY} ${targetX},${targetY}`;\n } else if (['left', 'right'].includes(sourcePosition) || ['left', 'right'].includes(targetPosition)) {\n dAttr = `M${sourceX},${sourceY} C${sourceX},${targetY} ${sourceX},${targetY} ${targetX},${targetY}`;\n }\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\n\nexport default memo((props) => {\n const {\n sourceX, sourceY, targetX, targetY, style = {}\n } = props;\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\n\nexport default memo((props) => {\n const {\n sourceX, sourceY, targetX, targetY, style = {}\n } = props;\n\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n\n return (\n \n );\n});\n","import React, { memo } from 'react';\nimport cx from 'classnames';\n\nimport { inInputDOMNode } from '../../utils';\nimport store from '../../store';\n\nexport default EdgeComponent => {\n const EdgeWrapper = memo((props) => {\n const {\n id, source, target, type,\n animated, selected, onClick\n } = props;\n const edgeClasses = cx('react-flow__edge', { selected, animated });\n const onEdgeClick = (evt) => {\n if (inInputDOMNode(evt)) {\n return false;\n }\n\n store.dispatch.setSelectedElements({ id, source, target });\n onClick({ id, source, target, type });\n };\n\n return (\n \n \n \n );\n });\n\n EdgeWrapper.displayName = 'EdgeWrapper';\n EdgeWrapper.whyDidYouRender = false;\n\n return EdgeWrapper;\n};\n","import StraightEdge from '../../components/Edges/StraightEdge';\nimport BezierEdge from '../../components/Edges/BezierEdge';\nimport wrapEdge from '../../components/Edges/wrapEdge';\n\nexport function createEdgeTypes(edgeTypes) {\n const standardTypes = {\n default: wrapEdge(edgeTypes.default || BezierEdge),\n straight: wrapEdge(edgeTypes.bezier || StraightEdge)\n };\n\n const specialTypes = Object\n .keys(edgeTypes)\n .filter(k => !['default', 'bezier'].includes(k))\n .reduce((res, key) => {\n res[key] = wrapEdge(edgeTypes[key] ||BezierEdge);\n\n return res;\n }, {});\n\n return {\n ...standardTypes,\n ...specialTypes\n };\n}\n","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","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { StoreProvider } from 'easy-peasy';\n\nif (process.env.NODE_ENV !== 'production') {\n const whyDidYouRender = require('@welldone-software/why-did-you-render');\n whyDidYouRender(React);\n}\n\nimport GraphView from '../GraphView';\nimport DefaultNode from '../../components/Nodes/DefaultNode';\nimport InputNode from '../../components/Nodes/InputNode';\nimport OutputNode from '../../components/Nodes/OutputNode';\nimport { createNodeTypes } from '../NodeRenderer/utils';\nimport BezierEdge from '../../components/Edges/BezierEdge';\nimport StraightEdge from '../../components/Edges/StraightEdge';\nimport StepEdge from '../../components/Edges/StepEdge';\nimport { createEdgeTypes } from '../EdgeRenderer/utils';\nimport store from '../../store';\n\nimport '../../style.css';\n\nconst ReactFlow = ({\n style, onElementClick, elements, children,\n nodeTypes, edgeTypes, onLoad, onMove,\n onElementsRemove, onConnect, onNodeDragStop, connectionLineType,\n connectionLineStyle, deleteKeyCode, selectionKeyCode,\n showBackground, backgroundGap, backgroundType, backgroundColor\n}) => {\n const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []);\n const edgeTypesParsed = useMemo(() => createEdgeTypes(edgeTypes), []);\n\n return (\n
\n \n \n {children}\n \n
\n );\n};\n\nReactFlow.displayName = 'ReactFlow';\n\nReactFlow.propTypes = {\n onElementClick: PropTypes.func,\n onElementsRemove: PropTypes.func,\n onNodeDragStop: PropTypes.func,\n onConnect: PropTypes.func,\n\tonLoad: PropTypes.func,\n onMove: PropTypes.func,\n nodeTypes: PropTypes.object,\n edgeTypes: PropTypes.object,\n connectionLineType: PropTypes.string,\n connectionLineStyle: PropTypes.object,\n deleteKeyCode: PropTypes.number,\n selectionKeyCode: PropTypes.number,\n gridColor: PropTypes.string,\n gridGap: PropTypes.number,\n showBackground: PropTypes.bool,\n backgroundType: PropTypes.oneOf(['lines', 'dots'])\n};\n\nReactFlow.defaultProps = {\n onElementClick: () => {},\n onElementsRemove: () => {},\n onNodeDragStop: () => {},\n onConnect: () => {},\n\tonLoad: () => {},\n onMove: () => {},\n nodeTypes: {\n input: InputNode,\n default: DefaultNode,\n output: OutputNode\n },\n edgeTypes: {\n default: BezierEdge,\n straight: StraightEdge,\n step: StepEdge\n },\n connectionLineType: 'bezier',\n connectionLineStyle: {},\n deleteKeyCode: 8,\n selectionKeyCode: 16,\n backgroundColor: '#eee',\n backgroundGap: 24,\n showBackground: true,\n backgroundType: 'dots'\n};\n\nexport default ReactFlow;\n","import React, { useRef, useEffect } from 'react';\nimport { useStoreState } from 'easy-peasy';\nimport classnames from 'classnames';\n\nimport { isFunction } from '../../utils'\nimport { getNodesInside } from '../../utils/graph';\n\nconst baseStyle = {\n position: 'absolute',\n zIndex: 5,\n bottom: 10,\n right: 10,\n width: 200\n};\n\nexport default ({ style = {}, className, bgColor = '#f8f8f8', nodeColor = '#ddd' }) => {\n const canvasNode = useRef(null);\n const state = useStoreState(s => ({\n width: s.width,\n height: s.height,\n nodes: s.nodes,\n transform: s.transform,\n })); const mapClasses = classnames('react-flow__minimap', className);\n const nodePositions = state.nodes.map(n => n.__rg.position);\n const width = style.width || baseStyle.width;\n const height = (state.height / (state.width || 1)) * width;\n const bbox = { x: 0, y: 0, width: state.width, height: state.height };\n const scaleFactor = width / state.width;\n const nodeColorFunc = isFunction(nodeColor) ? nodeColor : () => nodeColor;\n\n useEffect(() => {\n if (canvasNode) {\n const ctx = canvasNode.current.getContext('2d');\n const nodesInside = getNodesInside(state.nodes, bbox, state.transform, true);\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, width, height);\n\n nodesInside.forEach((n) => {\n const pos = n.__rg.position;\n const transformX = state.transform[0];\n const transformY = state.transform[1];\n const x = (pos.x * state.transform[2]) + transformX;\n const y = (pos.y * state.transform[2]) + transformY;\n\n ctx.fillStyle = nodeColorFunc(n);\n\n ctx.fillRect(\n (x * scaleFactor),\n (y * scaleFactor),\n n.__rg.width * scaleFactor * state.transform[2],\n n.__rg.height * scaleFactor * state.transform[2]\n );\n });\n }\n }, [nodePositions, state.transform, height])\n\n return (\n \n );\n}\n","import React from 'react';\nimport classnames from 'classnames';\n\nimport { fitView, zoomIn, zoomOut } from '../../utils/graph';\nimport PlusIcon from '../../../assets/icons/plus.svg';\nimport MinusIcon from '../../../assets/icons/minus.svg';\nimport FitviewIcon from '../../../assets/icons/fitview.svg';\n\nconst baseStyle = {\n position: 'absolute',\n zIndex: 5,\n bottom: 10,\n left: 10,\n};\n\nexport default ({ style, className }) => {\n const mapClasses = classnames('react-flow__controls', className);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n"],"names":["ReactPropTypesSecret","require$$0","ponyfill","$$observable","ownKeys","MapOrSimilar","createContext","useLayoutEffect","useEffect","useContext","useRef","useReducer","get","set","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","setOnConnect","action","state","onConnect","setNodes","nodes","setEdges","edges","updateNodeData","id","data","forEach","n","__rg","updateNodePos","pos","position","setSelection","isActive","selectionActive","setNodesSelection","selection","nodesSelectionActive","selectedElements","selectedNodes","getNodesInside","transform","selectedNodesBbox","getBoundingBox","setSelectedElements","elements","selectedElementsArr","Array","isArray","selectedElementsUpdated","isEqual","updateSelection","selectedEdges","getConnectedEdges","nextSelectedElements","updateTransform","x","y","k","updateSize","size","width","height","initD3","zoom","d3Zoom","d3Selection","d3Initialised","setConnectionPosition","connectionPosition","setConnectionSourceId","sourceId","connectionSourceId","store","actions","isFunction","obj","constructor","call","apply","isDefined","inInputDOMNode","e","target","includes","nodeName","getDimensions","node","offsetWidth","offsetHeight","isEdge","element","source","isNode","getOutgoers","outgoerIds","filter","map","removeElements","elementsToRemove","nodeIdsToRemove","getEdgeId","params","addEdge","edgeParams","Error","concat","pointToRendererPoint","rendererX","rendererY","parseElement","toString","type","handleBounds","bbox","reduce","res","x2","y2","minX","maxX","minY","maxY","Number","MAX_VALUE","partially","bboxPos","bboxWidth","bboxHeight","nodeWidth","nodeHeight","offsetX","offsetY","nodeIds","hasSourceHandleId","hasTargetHandleId","split","targetId","fitView","padding","getState","bounds","maxBoundsSize","Math","max","min","boundsCenterX","boundsCenterY","fittedTransform","zoomIdentity","translate","scale","zoomIn","scaleTo","zoomOut","renderNode","d","props","nodeType","nodeTypes","console","warn","NodeComponent","selected","onElementClick","onNodeDragStop","NodeRenderer","memo","useStoreState","s","transformStyle","displayName","whyDidYouRender","useState","sourceNode","setSourceNode","hasHandleId","sourceIdSplitted","nodeId","handleId","find","connectionLineStyle","className","cx","sourceHandle","sourceHandleX","sourceHandleY","sourceX","sourceY","targetX","connectionPositionX","targetY","connectionPositionY","dAttr","connectionLineType","yOffset","abs","centerY","getHandlePosition","handle","getHandle","length","getEdgePositions","sourcePosition","targetNode","targetHandle","targetPosition","sourceHandlePos","targetHandlePos","renderEdge","edgeType","sourceHandleId","targetHandleId","EdgeComponent","edgeTypes","elm","animated","EdgeRenderer","baseStyles","top","left","createGridLines","xOffset","gap","lineCountX","ceil","lineCountY","xValues","from","_","i","yValues","join","createGridDots","values","col","row","Grid","color","backgroundType","gridClasses","classnames","scaledGap","isLines","path","fill","stroke","propTypes","PropTypes","string","object","oneOf","defaultProps","bgComponents","lines","dots","BackgroundRenderer","rest","BackgroundComponent","initialRect","startX","startY","draw","getMousePosition","evt","containerBounds","document","querySelector","getBoundingClientRect","clientX","clientY","selectionPane","rect","setRect","useStoreActions","a","onMouseDown","mousePos","currentRect","onMouseMove","negativeX","negativeY","nextRect","onMouseUp","current","addEventListener","removeEventListener","fixed","_shims","_domFns","require$$1","require$$2","require$$3","_positionFns","require$$4","require$$5","getStartPositions","startPosition","offset","setOffset","startPositions","setStartPositions","onStart","scaledClient","onDrag","ReactDraggable","useKeyPress","keyCode","keyPressed","setKeyPressed","downHandler","upHandler","window","d3ZoomInstance","scaleExtent","event","button","useD3Zoom","zoomPane","onMove","shiftPressed","edged","select","on","sourceEvent","graphTransform","deleteKeyCode","onElementsRemove","deleteKeyPressed","connectedEdges","useElementUpdater","nextNodes","propNode","existingNode","nodesChanged","edgesChanged","GraphView","onLoad","selectionKeyCode","showBackground","backgroundGap","backgroundColor","rendererNode","selectionKeyPressed","onZoomPaneClick","updateDimensions","onresize","useGlobalKeyHandler","setSourceId","setPosition","isTarget","isValidConnection","recentHoveredHandle","resetRecentHandle","classList","remove","checkElementBelowIsValid","elementBelow","elementFromPoint","result","isValid","connection","isHoveringHandle","contains","getAttribute","isOwnHandle","add","toggle","BaseHandle","handleClasses","nodeIdWithHandleId","NodeIdContext","Provider","Consumer","Handle","onConnectAction","onConnectExtended","func","nodeStyles","background","borderRadius","label","isHandle","hasResizeObserver","ResizeObserver","getHandleBounds","sel","nodeElement","parentBounds","handles","querySelectorAll","dimensions","nodeIdAttr","handlePosition","nodeIdSplitted","onClick","dispatch","setDragging","onStop","isDragging","NodeWrapper","xPos","yPos","nodeClasses","nodeStyle","zIndex","updateNode","storeState","resizeObserver","entries","entry","observe","unobserve","createNodeTypes","standardTypes","input","wrapNode","InputNode","DefaultNode","output","OutputNode","specialTypes","Object","keys","key","centerX","EdgeWrapper","edgeClasses","onEdgeClick","createEdgeTypes","wrapEdge","BezierEdge","straight","bezier","StraightEdge","ReactFlow","children","nodeTypesParsed","useMemo","edgeTypesParsed","gridColor","gridGap","bool","step","StepEdge","baseStyle","bottom","right","bgColor","nodeColor","canvasNode","mapClasses","nodePositions","scaleFactor","nodeColorFunc","ctx","getContext","nodesInside","fillStyle","fillRect","transformX","transformY","PlusIcon","MinusIcon","FitviewIcon"],"mappings":"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"} \ No newline at end of file +{"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/dist/easy-peasy.esm.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/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/classnames/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/react-draggable/build/utils/shims.js","../node_modules/react-draggable/build/utils/getPrefix.js","../node_modules/react-draggable/build/utils/domFns.js","../node_modules/react-draggable/build/utils/positionFns.js","../node_modules/react-draggable/build/utils/log.js","../node_modules/react-draggable/build/DraggableCore.js","../node_modules/react-draggable/build/Draggable.js","../node_modules/react-draggable/index.js","../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#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","function Similar() {\n\tthis.list = [];\n\tthis.lastItem = undefined;\n\tthis.size = 0;\n\n\treturn this;\n}\n\nSimilar.prototype.get = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn this.lastItem.val;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn this.list[index].val;\n\t}\n\n\treturn undefined;\n};\n\nSimilar.prototype.set = function(key, val) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem.val = val;\n\t\treturn this;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\tthis.list[index].val = val;\n\t\treturn this;\n\t}\n\n\tthis.lastItem = { key: key, val: val };\n\tthis.list.push(this.lastItem);\n\tthis.size++;\n\n\treturn this;\n};\n\nSimilar.prototype.delete = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\tthis.lastItem = undefined;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.size--;\n\t\treturn this.list.splice(index, 1)[0];\n\t}\n\n\treturn undefined;\n};\n\n\n// important that has() doesn't use get() in case an existing key has a falsy value, in which case has() would return false\nSimilar.prototype.has = function(key) {\n\tvar index;\n\n\tif (this.lastItem && this.isEqual(this.lastItem.key, key)) {\n\t\treturn true;\n\t}\n\n\tindex = this.indexOf(key);\n\tif (index >= 0) {\n\t\tthis.lastItem = this.list[index];\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nSimilar.prototype.forEach = function(callback, thisArg) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tcallback.call(thisArg || this, this.list[i].val, this.list[i].key, this);\n\t}\n};\n\nSimilar.prototype.indexOf = function(key) {\n\tvar i;\n\tfor (i = 0; i < this.size; i++) {\n\t\tif (this.isEqual(this.list[i].key, key)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nSimilar.prototype.isEqual = function(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n};\n\nmodule.exports = Similar;","module.exports = function(forceSimilar) {\n\tif (typeof Map !== 'function' || forceSimilar) {\n\t\tvar Similar = require('./similar');\n\t\treturn new Similar();\n\t}\n\telse {\n\t\treturn new Map();\n\t}\n}\n","var MapOrSimilar = require('map-or-similar');\n\nmodule.exports = function (limit) {\n\tvar cache = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true'),\n\t\tlru = [];\n\n\treturn function (fn) {\n\t\tvar memoizerific = function () {\n\t\t\tvar currentCache = cache,\n\t\t\t\tnewMap,\n\t\t\t\tfnResult,\n\t\t\t\targsLengthMinusOne = arguments.length - 1,\n\t\t\t\tlruPath = Array(argsLengthMinusOne + 1),\n\t\t\t\tisMemoized = true,\n\t\t\t\ti;\n\n\t\t\tif ((memoizerific.numArgs || memoizerific.numArgs === 0) && memoizerific.numArgs !== argsLengthMinusOne + 1) {\n\t\t\t\tthrow new Error('Memoizerific functions should always be called with the same number of arguments');\n\t\t\t}\n\n\t\t\t// loop through each argument to traverse the map tree\n\t\t\tfor (i = 0; i < argsLengthMinusOne; i++) {\n\t\t\t\tlruPath[i] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[i]\n\t\t\t\t};\n\n\t\t\t\t// climb through the hierarchical map tree until the second-last argument has been found, or an argument is missing.\n\t\t\t\t// if all arguments up to the second-last have been found, this will potentially be a cache hit (determined later)\n\t\t\t\tif (currentCache.has(arguments[i])) {\n\t\t\t\t\tcurrentCache = currentCache.get(arguments[i]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tisMemoized = false;\n\n\t\t\t\t// make maps until last value\n\t\t\t\tnewMap = new MapOrSimilar(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP === 'true');\n\t\t\t\tcurrentCache.set(arguments[i], newMap);\n\t\t\t\tcurrentCache = newMap;\n\t\t\t}\n\n\t\t\t// we are at the last arg, check if it is really memoized\n\t\t\tif (isMemoized) {\n\t\t\t\tif (currentCache.has(arguments[argsLengthMinusOne])) {\n\t\t\t\t\tfnResult = currentCache.get(arguments[argsLengthMinusOne]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tisMemoized = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the result wasn't memoized, compute it and cache it\n\t\t\tif (!isMemoized) {\n\t\t\t\tfnResult = fn.apply(null, arguments);\n\t\t\t\tcurrentCache.set(arguments[argsLengthMinusOne], fnResult);\n\t\t\t}\n\n\t\t\t// if there is a cache limit, purge any extra results\n\t\t\tif (limit > 0) {\n\t\t\t\tlruPath[argsLengthMinusOne] = {\n\t\t\t\t\tcacheItem: currentCache,\n\t\t\t\t\targ: arguments[argsLengthMinusOne]\n\t\t\t\t};\n\n\t\t\t\tif (isMemoized) {\n\t\t\t\t\tmoveToMostRecentLru(lru, lruPath);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlru.push(lruPath);\n\t\t\t\t}\n\n\t\t\t\tif (lru.length > limit) {\n\t\t\t\t\tremoveCachedResult(lru.shift());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmemoizerific.wasMemoized = isMemoized;\n\t\t\tmemoizerific.numArgs = argsLengthMinusOne + 1;\n\n\t\t\treturn fnResult;\n\t\t};\n\n\t\tmemoizerific.limit = limit;\n\t\tmemoizerific.wasMemoized = false;\n\t\tmemoizerific.cache = cache;\n\t\tmemoizerific.lru = lru;\n\n\t\treturn memoizerific;\n\t};\n};\n\n// move current args to most recent position\nfunction moveToMostRecentLru(lru, lruPath) {\n\tvar lruLen = lru.length,\n\t\tlruPathLen = lruPath.length,\n\t\tisMatch,\n\t\ti, ii;\n\n\tfor (i = 0; i < lruLen; i++) {\n\t\tisMatch = true;\n\t\tfor (ii = 0; ii < lruPathLen; ii++) {\n\t\t\tif (!isEqual(lru[i][ii].arg, lruPath[ii].arg)) {\n\t\t\t\tisMatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (isMatch) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlru.push(lru.splice(i, 1)[0]);\n}\n\n// remove least recently used cache item and all dead branches\nfunction removeCachedResult(removedLru) {\n\tvar removedLruLen = removedLru.length,\n\t\tcurrentLru = removedLru[removedLruLen - 1],\n\t\ttmp,\n\t\ti;\n\n\tcurrentLru.cacheItem.delete(currentLru.arg);\n\n\t// walk down the tree removing dead branches (size 0) along the way\n\tfor (i = removedLruLen - 2; i >= 0; i--) {\n\t\tcurrentLru = removedLru[i];\n\t\ttmp = currentLru.cacheItem.get(currentLru.arg);\n\n\t\tif (!tmp || !tmp.size) {\n\t\t\tcurrentLru.cacheItem.delete(currentLru.arg);\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n// check if the numbers are equal, or whether they are both precisely NaN (isNaN returns true for all non-numbers)\nfunction isEqual(val1, val2) {\n\treturn val1 === val2 || (val1 !== val1 && val2 !== val2);\n}","import { isDraft, finishDraft, createDraft, setAutoFreeze } from 'immer-peasy';\nimport React, { createContext, useContext, useRef, useReducer, useLayoutEffect, useEffect, useMemo, useState } from 'react';\nimport { compose, createStore as createStore$1, applyMiddleware } from 'redux';\nimport reduxThunk from 'redux-thunk';\nimport memoizerific from 'memoizerific';\n\nvar StoreContext = createContext();\n\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction createStoreStateHook(Context) {\n return function useStoreState(mapState) {\n var store = useContext(Context);\n var mapStateRef = useRef(mapState);\n var stateRef = useRef();\n var mountedRef = useRef(true);\n var subscriptionMapStateError = useRef();\n\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n if (subscriptionMapStateError.current || mapStateRef.current !== mapState || stateRef.current === undefined) {\n try {\n stateRef.current = mapState(store.getState());\n } catch (err) {\n var errorMessage = \"An error occurred trying to map state in a useStoreState hook: \" + err.message + \".\";\n\n if (subscriptionMapStateError.current) {\n errorMessage += \"\\nThis error may be related to the following error:\\n\" + subscriptionMapStateError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n }\n\n useIsomorphicLayoutEffect(function () {\n mapStateRef.current = mapState;\n subscriptionMapStateError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n var checkMapState = function checkMapState() {\n try {\n var newState = mapStateRef.current(store.getState());\n\n if (newState === stateRef.current) {\n return;\n }\n\n stateRef.current = newState;\n } catch (err) {\n // see https://github.com/reduxjs/react-redux/issues/1179\n // There is a possibility mapState will fail due to stale state or\n // props, therefore we will just track the error and force our\n // component to update. It should then receive the updated state\n subscriptionMapStateError.current = err;\n }\n\n if (mountedRef.current) {\n forceRender({});\n }\n };\n\n var unsubscribe = store.subscribe(checkMapState);\n checkMapState();\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, []);\n return stateRef.current;\n };\n}\nvar useStoreState = createStoreStateHook(StoreContext);\nfunction createStoreActionsHook(Context) {\n return function useStoreActions(mapActions) {\n var store = useContext(Context);\n return mapActions(store.getActions());\n };\n}\nvar useStoreActions = createStoreActionsHook(StoreContext);\nfunction createStoreDispatchHook(Context) {\n return function useStoreDispatch() {\n var store = useContext(Context);\n return store.dispatch;\n };\n}\nvar useStoreDispatch = createStoreDispatchHook(StoreContext);\nfunction useStore() {\n return useContext(StoreContext);\n}\nfunction createTypedHooks() {\n return {\n useStoreActions: useStoreActions,\n useStoreDispatch: useStoreDispatch,\n useStoreState: useStoreState,\n useStore: useStore\n };\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar actionSymbol = '🙈action🙈';\nvar actionOnSymbol = '🙈actionOn🙈';\nvar computedSymbol = '🙈computedSymbol🙈';\nvar reducerSymbol = '🙈reducer🙈';\nvar thunkOnSymbol = '🙈thunkOn🙈';\nvar thunkSymbol = '🙈thunk🙈';\n\nvar debug = function debug(state) {\n if (isDraft(state)) {\n return finishDraft(createDraft(state));\n }\n\n return state;\n};\nvar memo = function memo(fn, cacheSize) {\n return memoizerific(cacheSize)(fn);\n};\nvar actionOn = function actionOn(targetResolver, fn) {\n fn[actionOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar action = function action(fn) {\n fn[actionSymbol] = {};\n return fn;\n};\nvar defaultStateResolvers = [function (state) {\n return state;\n}];\nvar computed = function computed(fnOrStateResolvers, fn) {\n if (typeof fn === 'function') {\n fn[computedSymbol] = {\n stateResolvers: fnOrStateResolvers\n };\n return fn;\n }\n\n fnOrStateResolvers[computedSymbol] = {\n stateResolvers: defaultStateResolvers\n };\n return fnOrStateResolvers;\n};\nvar thunkOn = function thunkOn(targetResolver, fn) {\n fn[thunkOnSymbol] = {\n targetResolver: targetResolver\n };\n return fn;\n};\nvar thunk = function thunk(fn) {\n fn[thunkSymbol] = {};\n return fn;\n};\nvar reducer = function reducer(fn) {\n fn[reducerSymbol] = {};\n return fn;\n};\n\nvar isStateObject = function isStateObject(x) {\n return x !== null && typeof x === 'object' && !Array.isArray(x) && x.constructor === Object;\n};\nvar get = function get(path, target) {\n return path.reduce(function (acc, cur) {\n return isStateObject(acc) ? acc[cur] : undefined;\n }, target);\n};\nvar set = function set(path, target, value) {\n path.reduce(function (acc, cur, idx) {\n if (idx + 1 === path.length) {\n acc[cur] = value;\n } else {\n acc[cur] = acc[cur] || {};\n }\n\n return acc[cur];\n }, target);\n};\n\nvar newify = function newify(currentPath, currentState, finalValue) {\n if (currentPath.length === 0) {\n return finalValue;\n }\n\n var newState = _extends({}, currentState);\n\n var key = currentPath[0];\n\n if (currentPath.length === 1) {\n newState[key] = finalValue;\n } else {\n newState[key] = newify(currentPath.slice(1), newState[key], finalValue);\n }\n\n return newState;\n};\n\nfunction createStoreInternals(_ref) {\n var disableImmer = _ref.disableImmer,\n initialState = _ref.initialState,\n injections = _ref.injections,\n model = _ref.model,\n reducerEnhancer = _ref.reducerEnhancer,\n references = _ref.references;\n\n function simpleProduce(path, state, fn) {\n if (disableImmer) {\n var _current = get(path, state);\n\n var next = fn(_current);\n\n if (_current !== next) {\n return newify(path, state, next);\n }\n\n return state;\n }\n\n var draft = createDraft(state);\n\n var current = get(path, draft);\n\n fn(current);\n return finishDraft(draft);\n }\n\n var defaultState = initialState;\n var actionCreatorDict = {};\n var actionCreators = {};\n var actionReducersDict = {};\n var actionThunks = {};\n var computedProperties = [];\n var customReducers = [];\n var listenerActionCreators = {};\n var listenerActionMap = {};\n var listenerDefinitions = [];\n var computedState = {\n isInReducer: false,\n currentState: defaultState\n };\n\n var recursiveExtractDefsFromModel = function recursiveExtractDefsFromModel(current, parentPath) {\n return Object.keys(current).forEach(function (key) {\n var value = current[key];\n var path = [].concat(parentPath, [key]);\n var meta = {\n parent: parentPath,\n path: path\n };\n\n var handleValueAsState = function handleValueAsState() {\n var initialParentRef = get(parentPath, initialState);\n\n if (initialParentRef && key in initialParentRef) {\n set(path, defaultState, initialParentRef[key]);\n } else {\n set(path, defaultState, value);\n }\n };\n\n if (typeof value === 'function') {\n if (value[actionSymbol] || value[actionOnSymbol]) {\n var prefix = value[actionSymbol] ? '@action' : '@actionOn';\n var type = prefix + \".\" + path.join('.');\n var actionMeta = value[actionSymbol] || value[actionOnSymbol];\n actionMeta.actionName = key;\n actionMeta.type = type;\n actionMeta.parent = meta.parent;\n actionMeta.path = meta.path; // Action Reducer\n\n actionReducersDict[type] = value; // Action Creator\n\n var actionCreator = function actionCreator(payload) {\n var actionDefinition = {\n type: type,\n payload: payload\n };\n\n if (value[actionOnSymbol] && actionMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(actionMeta.resolvedTargets);\n }\n\n var result = references.dispatch(actionDefinition);\n return result;\n };\n\n actionCreator.type = type;\n actionCreatorDict[type] = actionCreator;\n\n if (key !== 'easyPeasyReplaceState') {\n if (value[actionOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, actionCreator);\n } else {\n set(path, actionCreators, actionCreator);\n }\n }\n } else if (value[thunkSymbol] || value[thunkOnSymbol]) {\n var _prefix = value[thunkSymbol] ? '@thunk' : '@thunkOn';\n\n var _type = _prefix + \".\" + path.join('.');\n\n var thunkMeta = value[thunkSymbol] || value[thunkOnSymbol];\n thunkMeta.actionName = key;\n thunkMeta.type = _type;\n thunkMeta.parent = meta.parent;\n thunkMeta.path = meta.path; // Thunk Action\n\n var thunkHandler = function thunkHandler(payload) {\n var helpers = {\n dispatch: references.dispatch,\n getState: function getState() {\n return get(parentPath, references.getState());\n },\n getStoreActions: function getStoreActions() {\n return actionCreators;\n },\n getStoreState: references.getState,\n injections: injections,\n meta: meta\n };\n\n if (value[thunkOnSymbol] && thunkMeta.resolvedTargets) {\n payload.resolvedTargets = [].concat(thunkMeta.resolvedTargets);\n }\n\n return value(get(parentPath, actionCreators), payload, helpers);\n };\n\n set(path, actionThunks, thunkHandler); // Thunk Action Creator\n\n var startType = _type + \"(start)\";\n var successType = _type + \"(success)\";\n var failType = _type + \"(fail)\";\n\n var _actionCreator = function _actionCreator(payload) {\n var dispatchError = function dispatchError(err) {\n references.dispatch({\n type: failType,\n payload: payload,\n error: err\n });\n references.dispatch({\n type: _type,\n payload: payload,\n error: err\n });\n };\n\n var dispatchSuccess = function dispatchSuccess(result) {\n references.dispatch({\n type: successType,\n payload: payload,\n result: result\n });\n references.dispatch({\n type: _type,\n payload: payload,\n result: result\n });\n };\n\n references.dispatch({\n type: startType,\n payload: payload\n });\n\n try {\n var result = references.dispatch(function () {\n return thunkHandler(payload);\n });\n\n if (typeof result === 'object' && typeof result.then === 'function') {\n return result.then(function (resolved) {\n dispatchSuccess(resolved);\n return resolved;\n }).catch(function (err) {\n dispatchError(err);\n throw err;\n });\n }\n\n dispatchSuccess(result);\n return result;\n } catch (err) {\n dispatchError(err);\n throw err;\n }\n };\n\n _actionCreator.type = _type;\n _actionCreator.startType = startType;\n _actionCreator.successType = successType;\n _actionCreator.failType = failType;\n actionCreatorDict[_type] = _actionCreator;\n\n if (value[thunkOnSymbol]) {\n listenerDefinitions.push(value);\n set(path, listenerActionCreators, _actionCreator);\n } else {\n set(path, actionCreators, _actionCreator);\n }\n } else if (value[computedSymbol]) {\n var parent = get(parentPath, defaultState);\n\n var computedMeta = value[computedSymbol];\n var memoisedResultFn = memoizerific(1)(value);\n\n var createComputedProperty = function createComputedProperty(o) {\n Object.defineProperty(o, key, {\n configurable: true,\n enumerable: true,\n get: function get$1() {\n var storeState;\n\n if (computedState.isInReducer) {\n storeState = computedState.currentState;\n } else if (references.getState == null) {\n return undefined;\n } else {\n try {\n storeState = references.getState();\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Invalid access attempt to a computed property');\n }\n\n return undefined;\n }\n }\n\n var state = get(parentPath, storeState);\n\n var inputs = computedMeta.stateResolvers.map(function (resolver) {\n return resolver(state, storeState);\n });\n return memoisedResultFn.apply(void 0, inputs);\n }\n });\n };\n\n createComputedProperty(parent);\n computedProperties.push({\n key: key,\n parentPath: parentPath,\n createComputedProperty: createComputedProperty\n });\n } else if (value[reducerSymbol]) {\n customReducers.push({\n key: key,\n parentPath: parentPath,\n reducer: value\n });\n } else {\n handleValueAsState();\n }\n } else if (isStateObject(value)) {\n var existing = get(path, defaultState);\n\n if (existing == null) {\n set(path, defaultState, {});\n }\n\n recursiveExtractDefsFromModel(value, path);\n } else {\n handleValueAsState();\n }\n });\n };\n\n recursiveExtractDefsFromModel(model, []);\n listenerDefinitions.forEach(function (listenerActionOrThunk) {\n var listenerMeta = listenerActionOrThunk[actionOnSymbol] || listenerActionOrThunk[thunkOnSymbol];\n var targets = listenerMeta.targetResolver(get(listenerMeta.parent, actionCreators), actionCreators);\n var targetTypes = (Array.isArray(targets) ? targets : [targets]).reduce(function (acc, target) {\n if (typeof target === 'function' && target.type && actionCreatorDict[target.type]) {\n acc.push(target.type);\n } else if (typeof target === 'string') {\n acc.push(target);\n }\n\n return acc;\n }, []);\n listenerMeta.resolvedTargets = targetTypes;\n targetTypes.forEach(function (targetType) {\n var listenerReg = listenerActionMap[targetType] || [];\n listenerReg.push(actionCreatorDict[listenerMeta.type]);\n listenerActionMap[targetType] = listenerReg;\n });\n });\n\n var createReducer = function createReducer() {\n var runActionReducerAtPath = function runActionReducerAtPath(state, action, actionReducer, path) {\n return simpleProduce(path, state, function (draft) {\n return actionReducer(draft, action.payload);\n });\n };\n\n var reducerForActions = function reducerForActions(state, action) {\n var actionReducer = actionReducersDict[action.type];\n\n if (actionReducer) {\n var actionMeta = actionReducer[actionSymbol] || actionReducer[actionOnSymbol];\n return runActionReducerAtPath(state, action, actionReducer, actionMeta.parent);\n }\n\n return state;\n };\n\n var reducerForCustomReducers = function reducerForCustomReducers(state, action) {\n return customReducers.reduce(function (acc, _ref2) {\n var parentPath = _ref2.parentPath,\n key = _ref2.key,\n red = _ref2.reducer;\n return simpleProduce(parentPath, acc, function (draft) {\n draft[key] = red(draft[key], action);\n return draft;\n });\n }, state);\n };\n\n var rootReducer = function rootReducer(state, action) {\n var stateAfterActions = reducerForActions(state, action);\n var next = customReducers.length > 0 ? reducerForCustomReducers(stateAfterActions, action) : stateAfterActions;\n\n if (state !== next) {\n computedProperties.forEach(function (_ref3) {\n var parentPath = _ref3.parentPath,\n createComputedProperty = _ref3.createComputedProperty;\n createComputedProperty(get(parentPath, next));\n });\n }\n\n return next;\n };\n\n return rootReducer;\n };\n\n return {\n actionCreatorDict: actionCreatorDict,\n actionCreators: actionCreators,\n computedProperties: computedProperties,\n computedState: computedState,\n defaultState: defaultState,\n listenerActionCreators: listenerActionCreators,\n listenerActionMap: listenerActionMap,\n reducer: reducerEnhancer(createReducer())\n };\n}\n\nfunction createStore(model, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n compose$1 = _options.compose,\n _options$devTools = _options.devTools,\n devTools = _options$devTools === void 0 ? true : _options$devTools,\n _options$disableImmer = _options.disableImmer,\n disableImmer = _options$disableImmer === void 0 ? false : _options$disableImmer,\n _options$enhancers = _options.enhancers,\n enhancers = _options$enhancers === void 0 ? [] : _options$enhancers,\n _options$initialState = _options.initialState,\n initialState = _options$initialState === void 0 ? {} : _options$initialState,\n injections = _options.injections,\n _options$middleware = _options.middleware,\n middleware = _options$middleware === void 0 ? [] : _options$middleware,\n _options$mockActions = _options.mockActions,\n mockActions = _options$mockActions === void 0 ? false : _options$mockActions,\n _options$name = _options.name,\n storeName = _options$name === void 0 ? \"EasyPeasyStore\" : _options$name,\n _options$reducerEnhan = _options.reducerEnhancer,\n reducerEnhancer = _options$reducerEnhan === void 0 ? function (rootReducer) {\n return rootReducer;\n } : _options$reducerEnhan;\n\n var bindReplaceState = function bindReplaceState(modelDef) {\n return _extends({}, modelDef, {\n easyPeasyReplaceState: action(function (state, payload) {\n return payload;\n })\n });\n };\n\n var modelDefinition = bindReplaceState(model);\n var mockedActions = [];\n var references = {};\n\n var bindStoreInternals = function bindStoreInternals(state) {\n if (state === void 0) {\n state = {};\n }\n\n references.internals = createStoreInternals({\n disableImmer: disableImmer,\n initialState: state,\n injections: injections,\n model: modelDefinition,\n reducerEnhancer: reducerEnhancer,\n references: references\n });\n };\n\n bindStoreInternals(initialState);\n\n var listenerActionsMiddleware = function listenerActionsMiddleware() {\n return function (next) {\n return function (action) {\n var result = next(action);\n\n if (action && references.internals.listenerActionMap[action.type] && references.internals.listenerActionMap[action.type].length > 0) {\n var sourceAction = references.internals.actionCreatorDict[action.type];\n references.internals.listenerActionMap[action.type].forEach(function (actionCreator) {\n actionCreator({\n type: sourceAction ? sourceAction.type : action.type,\n payload: action.payload,\n error: action.error,\n result: action.result\n });\n });\n }\n\n return result;\n };\n };\n };\n\n var mockActionsMiddleware = function mockActionsMiddleware() {\n return function () {\n return function (action) {\n if (action != null) {\n mockedActions.push(action);\n }\n\n return undefined;\n };\n };\n };\n\n var computedPropertiesMiddleware = function computedPropertiesMiddleware(store) {\n return function (next) {\n return function (action) {\n references.internals.computedState.currentState = store.getState();\n references.internals.computedState.isInReducer = true;\n return next(action);\n };\n };\n };\n\n var easyPeasyMiddleware = [computedPropertiesMiddleware, reduxThunk].concat(middleware, [listenerActionsMiddleware]);\n\n if (mockActions) {\n easyPeasyMiddleware.push(mockActionsMiddleware);\n }\n\n var composeEnhancers = compose$1 || (devTools && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: storeName\n }) : compose);\n var store = createStore$1(references.internals.reducer, references.internals.defaultState, composeEnhancers.apply(void 0, [applyMiddleware.apply(void 0, easyPeasyMiddleware)].concat(enhancers)));\n store.subscribe(function () {\n references.internals.computedState.isInReducer = false;\n });\n references.dispatch = store.dispatch;\n references.getState = store.getState;\n\n var bindActionCreators = function bindActionCreators() {\n Object.keys(store.dispatch).forEach(function (actionsKey) {\n delete store.dispatch[actionsKey];\n });\n Object.keys(references.internals.actionCreators).forEach(function (key) {\n store.dispatch[key] = references.internals.actionCreators[key];\n });\n };\n\n bindActionCreators();\n\n var rebindStore = function rebindStore(removeKey) {\n var currentState = store.getState();\n\n if (removeKey) {\n delete currentState[removeKey];\n }\n\n bindStoreInternals(store.getState());\n store.replaceReducer(references.internals.reducer);\n references.internals.actionCreatorDict['@action.easyPeasyReplaceState'](references.internals.defaultState);\n bindActionCreators();\n };\n\n return Object.assign(store, {\n addModel: function addModel(key, modelForKey) {\n if (modelDefinition[key] && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model already contains a model definition for \\\"\" + key + \"\\\"\");\n store.removeModel(key);\n }\n\n modelDefinition[key] = modelForKey;\n rebindStore();\n },\n clearMockedActions: function clearMockedActions() {\n mockedActions = [];\n },\n getActions: function getActions() {\n return references.internals.actionCreators;\n },\n getListeners: function getListeners() {\n return references.internals.listenerActionCreators;\n },\n getMockedActions: function getMockedActions() {\n return [].concat(mockedActions);\n },\n reconfigure: function reconfigure(newModel) {\n modelDefinition = bindReplaceState(newModel);\n rebindStore();\n },\n removeModel: function removeModel(key) {\n if (!modelDefinition[key]) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"easy-peasy: The store model does not contain a model definition for \\\"\" + key + \"\\\"\");\n }\n\n return;\n }\n\n delete modelDefinition[key];\n rebindStore(key);\n }\n });\n}\n\n/* eslint-disable react/prop-types */\nfunction createContextStore(model, config) {\n var StoreContext = createContext();\n\n function Provider(_ref) {\n var children = _ref.children,\n initialData = _ref.initialData;\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n }\n\n function useStore() {\n return useContext(StoreContext);\n }\n\n return {\n Provider: Provider,\n useStore: useStore,\n useStoreState: createStoreStateHook(StoreContext),\n useStoreActions: createStoreActionsHook(StoreContext),\n useStoreDispatch: createStoreDispatchHook(StoreContext)\n };\n}\n\n/**\n * Some good references on the topic of reinitialisation:\n * - https://github.com/facebook/react/issues/14830\n */\n\nfunction createComponentStore(model, config) {\n return function useLocalStore(initialData) {\n var store = useMemo(function () {\n return createStore(typeof model === 'function' ? model(initialData) : model, config);\n }, []);\n var previousStateRef = useRef(store.getState());\n\n var _useState = useState(function () {\n return store.getState();\n }),\n currentState = _useState[0],\n setCurrentState = _useState[1];\n\n useEffect(function () {\n return store.subscribe(function () {\n var nextState = store.getState();\n\n if (previousStateRef.current !== nextState) {\n previousStateRef.current = nextState;\n setCurrentState(nextState);\n }\n });\n }, [store]);\n return [currentState, store.getActions()];\n };\n}\n\nvar StoreProvider = function StoreProvider(_ref) {\n var children = _ref.children,\n store = _ref.store;\n return React.createElement(StoreContext.Provider, {\n value: store\n }, children);\n};\n\n/**\n * The auto freeze feature of immer doesn't seem to work in our testing. We have\n * explicitly disabled it to avoid perf issues.\n */\n\nsetAutoFreeze(false);\n\nexport { StoreProvider, action, actionOn, computed, createComponentStore, createContextStore, createStore, createTypedHooks, debug, memo, reducer, thunk, thunkOn, useStore, useStoreActions, useStoreDispatch, useStoreState };\n//# sourceMappingURL=easy-peasy.esm.js.map\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","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 return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","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 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","/*!\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","/**\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 ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\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 };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findInArray = findInArray;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\nexports.int = int;\nexports.dontSetMe = dontSetMe;\n\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array\n/*: Array | TouchList*/\n, callback\n/*: Function*/\n)\n/*: any*/\n{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nfunction isFunction(func\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nfunction isNum(num\n/*: any*/\n)\n/*: boolean*/\n{\n return typeof num === 'number' && !isNaN(num);\n}\n\nfunction int(a\n/*: string*/\n)\n/*: number*/\n{\n return parseInt(a, 10);\n}\n\nfunction dontSetMe(props\n/*: Object*/\n, propName\n/*: string*/\n, componentName\n/*: string*/\n) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPrefix = getPrefix;\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\n\nfunction getPrefix(prop\n/*: string*/\n= 'transform')\n/*: string*/\n{\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n const style = window.document.documentElement.style;\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nfunction browserPrefixToKey(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nfunction browserPrefixToStyle(prop\n/*: string*/\n, prefix\n/*: string*/\n)\n/*: string*/\n{\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str\n/*: string*/\n)\n/*: string*/\n{\n let out = '';\n let shouldCapitalize = true;\n\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n\n return out;\n} // Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\n\n\nvar _default = getPrefix();\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.addEvent = addEvent;\nexports.removeEvent = removeEvent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTranslation = getTranslation;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nexports.styleHacks = styleHacks;\nexports.addClassName = addClassName;\nexports.removeClassName = removeClassName;\n\nvar _shims = require(\"./shims\");\n\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nlet matchesSelectorFunc = '';\n\nfunction matchesSelector(el\n/*: Node*/\n, selector\n/*: string*/\n)\n/*: boolean*/\n{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n } // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n\n\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; // $FlowIgnore: Doesn't think elements are indexable\n\n return el[matchesSelectorFunc](selector);\n} // Works up the tree to the draggable itself attempting to match selector.\n\n\nfunction matchesSelectorAndParentsTo(el\n/*: Node*/\n, selector\n/*: string*/\n, baseNode\n/*: Node*/\n)\n/*: boolean*/\n{\n let node = el;\n\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nfunction addEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nfunction removeEvent(el\n/*: ?Node*/\n, event\n/*: string*/\n, handler\n/*: Function*/\n)\n/*: void*/\n{\n if (!el) {\n return;\n }\n\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nfunction outerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\n\nfunction outerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\n\nfunction innerHeight(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\n\nfunction innerWidth(node\n/*: HTMLElement*/\n)\n/*: number*/\n{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n} // Get from offsetParent\n\n\nfunction offsetXYFromParent(evt\n/*: {clientX: number, clientY: number}*/\n, offsetParent\n/*: HTMLElement*/\n)\n/*: ControlPosition*/\n{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n return {\n x,\n y\n };\n}\n\nfunction createCSSTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: Object*/\n{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\n\nfunction createSVGTransform(controlPos\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n)\n/*: string*/\n{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\n\nfunction getTranslation({\n x,\n y\n}\n/*: ControlPosition*/\n, positionOffset\n/*: PositionOffsetControlPosition*/\n, unitSuffix\n/*: string*/\n)\n/*: string*/\n{\n let translation = `translate(${x}${unitSuffix},${y}${unitSuffix})`;\n\n if (positionOffset) {\n const defaultX = `${typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix}`;\n const defaultY = `${typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix}`;\n translation = `translate(${defaultX}, ${defaultY})` + translation;\n }\n\n return translation;\n}\n\nfunction getTouch(e\n/*: MouseTouchEvent*/\n, identifier\n/*: number*/\n)\n/*: ?{clientX: number, clientY: number}*/\n{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\n\nfunction getTouchIdentifier(e\n/*: MouseTouchEvent*/\n)\n/*: ?number*/\n{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n} // User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n// Note we're passing `document` b/c we could be iframed\n\n\nfunction addUserSelectStyles(doc\n/*: ?Document*/\n) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nfunction removeUserSelectStyles(doc\n/*: ?Document*/\n) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); // $FlowIgnore: IE\n\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n }\n } catch (e) {// probably IE\n }\n}\n\nfunction styleHacks(childStyle\n/*: Object*/\n= {})\n/*: Object*/\n{\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nfunction addClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nfunction removeClassName(el\n/*: HTMLElement*/\n, className\n/*: string*/\n) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBoundPosition = getBoundPosition;\nexports.snapToGrid = snapToGrid;\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.getControlPosition = getControlPosition;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\n\nvar _shims = require(\"./shims\");\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./domFns\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getBoundPosition(draggable\n/*: Draggable*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: [number, number]*/\n{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y]; // Clone new bounds\n\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode); // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n } // Keep x and y below right and bottom limits...\n\n\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); // But above left and top limits.\n\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\n\nfunction snapToGrid(grid\n/*: [number, number]*/\n, pendingX\n/*: number*/\n, pendingY\n/*: number*/\n)\n/*: [number, number]*/\n{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nfunction canDragX(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nfunction canDragY(draggable\n/*: Draggable*/\n)\n/*: boolean*/\n{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n} // Get {x, y} positions from event.\n\n\nfunction getControlPosition(e\n/*: MouseTouchEvent*/\n, touchIdentifier\n/*: ?number*/\n, draggableCore\n/*: DraggableCore*/\n)\n/*: ?ControlPosition*/\n{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n\n const node = findDOMNode(draggableCore); // User can provide an offsetParent if desired.\n\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent);\n} // Create an data object exposed by 's events\n\n\nfunction createCoreData(draggable\n/*: DraggableCore*/\n, x\n/*: number*/\n, y\n/*: number*/\n)\n/*: DraggableData*/\n{\n const state = draggable.state;\n const isStart = !(0, _shims.isNum)(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX,\n deltaY: y - state.lastY,\n lastX: state.lastX,\n lastY: state.lastY,\n x,\n y\n };\n }\n} // Create an data exposed by 's events\n\n\nfunction createDraggableData(draggable\n/*: Draggable*/\n, coreData\n/*: DraggableData*/\n)\n/*: DraggableData*/\n{\n const scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n} // A lot faster than stringify/parse\n\n\nfunction cloneBounds(bounds\n/*: Bounds*/\n)\n/*: Bounds*/\n{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable\n/*: Draggable | DraggableCore*/\n)\n/*: HTMLElement*/\n{\n const node = _reactDom.default.findDOMNode(draggable);\n\n if (!node) {\n throw new Error(': Unmounted during event!');\n } // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n\n\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n\n/*eslint no-console:0*/\nfunction log(...args) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n}; // Default to mouse events.\n\nlet dragEventFor = eventsFor.mouse;\n/*:: type DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};*/\n\n/*:: export type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};*/\n\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/\n\n/*:: export type ControlPosition = {x: number, y: number};*/\n\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n\n/*:: export type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};*/\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\nclass DraggableCore extends _react.default.Component {\n constructor(...args) {\n super(...args);\n\n _defineProperty(this, \"state\", {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN,\n lastY: NaN,\n touchIdentifier: null\n });\n\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e); // Only accept left-clicks.\n\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; // Get nodes. Be sure to grab relative document (could be iframed)\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n\n const {\n ownerDocument\n } = thisNode; // Short circuit if handle or cancel prop was provided and selector doesn't match.\n\n if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n return;\n } // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n\n\n const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.setState({\n touchIdentifier\n }); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n\n const {\n x,\n y\n } = position; // Create an event object with all the data parents need to make a decision here.\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent); // Call event handler. If it returns explicit false, cancel.\n\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return; // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n\n this.setState({\n dragging: true,\n lastX: x,\n lastY: y\n }); // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n\n _defineProperty(this, \"handleDrag\", e => {\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault(); // Get the current drag point from the event. This is used as the offset.\n\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position; // Snap to grid if prop has been provided\n\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX,\n deltaY = y - this.state.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent); // Call event handler. If it returns explicit false, trigger end.\n\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents')\n /*: any*/\n )\n /*: MouseTouchEvent*/\n ); // I see why this insanity was deprecated\n // $FlowIgnore\n\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n });\n\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.state.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {\n x,\n y\n } = position;\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent); // Reset the el.\n\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n }); // Call event handler\n\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n });\n\n _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n\n _defineProperty(this, \"onTouchStart\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStart(e);\n });\n\n _defineProperty(this, \"onTouchEnd\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStop(e);\n });\n }\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = _reactDom.default.findDOMNode(this);\n\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return _react.default.cloneElement(_react.default.Children.only(this.props.children), {\n style: (0, _domFns.styleHacks)(this.props.children.props.style),\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n\n}\n\nexports.default = DraggableCore;\n\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props\n /*: DraggableCoreProps*/\n , propName\n /*: $Keys*/\n ) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {}\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _domFns = require(\"./utils/domFns\");\n\nvar _positionFns = require(\"./utils/positionFns\");\n\nvar _shims = require(\"./utils/shims\");\n\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\n\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n// Define \n//\nclass Draggable extends _react.default.Component {\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps({\n position\n }\n /*: DraggableProps*/\n , {\n prevPropsPosition\n }\n /*: DraggableState*/\n ) {\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: { ...position\n }\n };\n }\n\n return null;\n }\n\n constructor(props\n /*: DraggableProps*/\n ) {\n super(props);\n\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData); // Short-circuit if user's callback killed it.\n\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData)); // Kills start event on core as well, so move handlers are never bound.\n\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState\n /*: $Shape*/\n = {\n x: uiData.x,\n y: uiData.y\n }; // Keep within bounds.\n\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState; // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n\n newState.x += this.state.slackX;\n newState.y += this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries.\n\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY; // Recalculate slack by noting how much was shaved by the boundPosition handler.\n\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y); // Update the event we fire to reflect what really happened after bounds took effect.\n\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n } // Short-circuit if user's callback killed it.\n\n\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false; // Short-circuit if user's callback killed it.\n\n const shouldStop = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldStop === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState\n /*: $Shape*/\n = {\n dragging: false,\n slackX: 0,\n slackY: 0\n }; // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n\n const controlled = Boolean(this.props.position);\n\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n });\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: { ...props.position\n },\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && _reactDom.default.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n\n componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\n\n render()\n /*: ReactElement*/\n {\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null; // If this is controlled, we don't want to move it - unless it's dragging.\n\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n }; // If this element was SVG, we use the `transform` attribute.\n\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n } // Mark with class while dragging\n\n\n const className = (0, _classnames.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n }); // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n\n return _react.default.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), _react.default.cloneElement(_react.default.Children.only(children), {\n className: className,\n style: { ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n\n}\n\nexports.default = Draggable;\n\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n\n_defineProperty(Draggable, \"propTypes\", { // Accepts all props accepts.\n ..._DraggableCore.default.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n\n_defineProperty(Draggable, \"defaultProps\", { ..._DraggableCore.default.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n position: null,\n scale: 1\n});","var Draggable = require('./build/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./build/DraggableCore').default;\n","\"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","createContext","useLayoutEffect","useEffect","useContext","useRef","useReducer","get","set","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","_shims","_domFns","require$$1","require$$2","require$$3","_positionFns","require$$4","require$$5"],"mappings":";;;;;;;;;;AAAA,IAAI,GAAG,CAAC;AACR,IAAI,OAAO,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACvH,IAAI,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,oBAAoB,CAAC;AACnH,IAAI,WAAW,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC;AAC7G,SAAS,OAAO,CAAC,KAAK,EAAE;EACtB,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;CACxC;AACD,SAAS,WAAW,CAAC,KAAK,EAAE;EAC1B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;EAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE;EAC1C,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;EACzC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE;EAC1D,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;CAC7D;AACD,AAMA,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;EAC3D,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;IACrB,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;MACnB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;KAC1B;GACF;;EAED,OAAO,MAAM,CAAC;CACf,CAAC;AACF,IAAI,OAAO,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,MAAM,CAAC,qBAAqB,KAAK,WAAW,GAAG,UAAU,GAAG,EAAE,EAAE,OAAO,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC5Q,SAAS,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE;EACxC,KAAK,aAAa,KAAK,KAAK,CAAC,GAAG,aAAa,GAAG,KAAK,CAAC;;EAEtD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;EACjD,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;EACvD,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;IACnC,IAAI,GAAG,KAAK,WAAW,EAAE;MACvB,OAAO;KACR;;IAED,IAAI,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;IAEvB,IAAI,IAAI,CAAC,GAAG,EAAE;MACZ,IAAI,aAAa,EAAE;QACjB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OAC7B;KACF;;IAED,IAAI,IAAI,CAAC,UAAU,EAAE;MACnB,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KACpB,MAAM,IAAI,aAAa,EAAE;MACxB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;QAChC,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;OACnB,CAAC,CAAC;KACJ;GACF,CAAC,CAAC;EACH,OAAO,KAAK,CAAC;CACd;AACD,SAAS,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE;EACvB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;GACnE,MAAM;IACL,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;GAC/E;CACF;AACD,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE;EAChC,IAAI,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACvD,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC;CAClC;AACD,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE;EACxB,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;CAC1D;AACD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;;EAEhB,IAAI,CAAC,KAAK,CAAC,EAAE;IACX,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;GACnC,MAAM;IACL,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;GAC3B;CACF;;;;AAID,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,MAAM,EAAE;EAC3C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;;EAGrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;;EAE1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;CACrB,CAAC;;AAEF,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,aAAa,EAAE;EACpE,IAAI,aAAa,EAAE;IACjB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;GACpC;CACF,CAAC;;AAEF,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,QAAQ,IAAI;EACjD,IAAI,CAAC,KAAK,EAAE,CAAC;EACb,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;EAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;CACpB,CAAC;;AAEF,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;EAC7C,IAAI,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE;IAC/B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;GAClC;CACF,CAAC;AACF,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;;AAE1B,UAAU,CAAC,KAAK,GAAG,YAAY;EAC7B,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACpD,CAAC;;AAEF,SAAS,MAAM,CAAC,KAAK,EAAE;EACrB,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC;CAC7B;;;;AAID,IAAI,WAAW,GAAG,EAAE,CAAC;AACrB,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;EAC/C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;IACpC,KAAK,CAAC,WAAW,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;GACtC,CAAC,CAAC;;EAEH,IAAI,CAAC,UAAU,EAAE;IACf,IAAI,KAAK,CAAC,OAAO,EAAE;MACjB,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KACzC;;;IAGD,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;GAChC;OACI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE;MAC7D,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KAChC;CACJ;AACD,SAAS,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE;EACjC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAClC,IAAI,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;EACtC,IAAI,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE;IAC1B,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;GACjE,CAAC,CAAC;;EAEH,IAAI,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC;EACvD,IAAI,KAAK,GAAG;IACV,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,KAAK;;IAEjB,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,KAAK;;GAEf,CAAC;EACF,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;EAChD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzB,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,QAAQ,GAAG;EAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;CACrB;;AAED,SAAS,MAAM,CAAC,KAAK,EAAE;EACrB,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;CACjC;;;AAGD,SAAS,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;EACzB,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;;EAE/B,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;IAC9B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;IACxB,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;IACzB,OAAO,KAAK,CAAC;GACd;;EAED,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;CACpB;;AAED,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE;EACxB,eAAe,CAAC,KAAK,CAAC,CAAC;EACvB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;EACtC,IAAI,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;;EAEvC,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;IAC1D,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;GACrD;;EAED,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;EAC/B,eAAe,CAAC,KAAK,CAAC,CAAC;EACvB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;;EAE5B,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IACnB,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE;IACrD,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,WAAW,CAAC,KAAK,CAAC,CAAC;GACpB;;EAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;CAC1B;;AAED,SAAS,WAAW,CAAC,KAAK,EAAE;EAC1B,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IACnB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;GACjD;CACF;;AAED,SAAS,WAAW,CAAC,KAAK,EAAE;EAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;CACnE;;AAED,SAAS,mBAAmB,CAAC,IAAI,EAAE;EACjC,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;;EAEtC,IAAI,KAAK,EAAE;IACT,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;IACxB,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;IACzB,OAAO,KAAK,CAAC;GACd;;EAED,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;CAC1B;;AAED,SAAS,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;EAC9C,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;;EAE7B,IAAI,IAAI,EAAE;IACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;GAC9B,MAAM;IACL,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG;MACzB,YAAY,EAAE,IAAI;MAClB,UAAU,EAAE,UAAU;;MAEtB,GAAG,EAAE,SAAS,KAAK,GAAG;QACpB,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;OACrC;;MAED,GAAG,EAAE,SAAS,KAAK,CAAC,KAAK,EAAE;QACzB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;OACrC;;KAEF,CAAC;GACH;;EAED,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CAC1C;;AAED,SAAS,eAAe,CAAC,KAAK,EAAE;EAC9B,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,sHAAsH,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;CACzM;;;AAGD,SAAS,gBAAgB,CAAC,MAAM,EAAE;;;;;EAKhC,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;;IAEnC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;MACnB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC7B,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;OACpD,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;KAC5D;GACF;CACF;;AAED,SAAS,sBAAsB,CAAC,MAAM,EAAE;EACtC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,EAAE,OAAO,EAAE;EACtD,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;EAChC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE;EACvB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EACtB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;EACxB,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;;IAE1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;;MAExC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QAC9C,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACrB,WAAW,CAAC,KAAK,CAAC,CAAC;OACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;QAEzB,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;OACpC;KACF,CAAC,CAAC;;IAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;;MAEvC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;QAChD,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,WAAW,CAAC,KAAK,CAAC,CAAC;OACpB;KACF,CAAC,CAAC;GACJ,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;IACjC,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;;IAEvB,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;MAC9B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE;KAC1E,MAAM;MACL,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE;KACjF;;IAED,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;;MAE3C,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;KACzE;GACF;CACF;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE;EAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EACtB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;;;EAGxB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;EAE9B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IACzC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;;IAE1B,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;MAC9C,OAAO,IAAI,CAAC;KACb;;SAEI;QACD,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;;QAE1C,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;UAChE,OAAO,IAAI,CAAC;SACb;OACF;GACJ;;;;EAID,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;CACjD;;AAED,SAAS,eAAe,CAAC,KAAK,EAAE;EAC9B,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;EACxB,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE;;;;;;;;EAQxD,IAAI,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;EAE1E,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE;;EAEnD,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;EACjD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;IAClC,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,IAAI;GACf,CAAC,CAAC;CACJ;;AAED,IAAI,WAAW,gBAAgB,MAAM,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,YAAY;IAC1B,WAAW,EAAE,WAAW;CAC3B,CAAC,CAAC;;AAEH,SAAS,cAAc,GAAG,EAAE;AAC5B,SAAS,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;EACnC,IAAI,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC;EACvD,IAAI,KAAK,GAAG;;IAEV,KAAK,EAAE,KAAK;;IAEZ,QAAQ,EAAE,KAAK;;IAEf,SAAS,EAAE,KAAK;;IAEhB,QAAQ,EAAE,EAAE;;IAEZ,MAAM,EAAE,MAAM;;IAEd,IAAI,EAAE,IAAI;;IAEV,KAAK,EAAE,IAAI;;IAEX,MAAM,EAAE,EAAE;;IAEV,IAAI,EAAE,IAAI;;IAEV,MAAM,EAAE,IAAI;GACb,CAAC;EACF,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;;EAE7B,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;EAC3E,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;EACxB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;EACtB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;EACpB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;EACtB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzB,OAAO,KAAK,CAAC;CACd;AACD,IAAI,WAAW,GAAG;EAChB,GAAG,EAAE,KAAK;;EAEV,GAAG,EAAE,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE;IAC9B,OAAO,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;GACjC;;EAED,OAAO,EAAE,SAAS,OAAO,CAAC,MAAM,EAAE;IAChC,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;GAC1C;;EAED,GAAG,EAAE,KAAK;EACV,cAAc,EAAE,cAAc;EAC9B,wBAAwB,EAAE,wBAAwB;;EAElD,cAAc,EAAE,SAAS,cAAc,GAAG;IACxC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;GAC7E;;EAED,cAAc,EAAE,SAAS,cAAc,CAAC,MAAM,EAAE;IAC9C,OAAO,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;GAC3C;;EAED,cAAc,EAAE,SAAS,cAAc,GAAG;IACxC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;GAC7E;;CAEF,CAAC;AACF,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,EAAE,EAAE,EAAE;EACnC,UAAU,CAAC,GAAG,CAAC,GAAG,YAAY;IAC5B,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GAClC,CAAC;CACH,CAAC,CAAC;;AAEH,UAAU,CAAC,cAAc,GAAG,UAAU,KAAK,EAAE,IAAI,EAAE;EACjD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;IACzB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;GAC/D;;EAED,OAAO,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;CAC9D,CAAC;;AAEF,UAAU,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;EAC7C,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;IAC9C,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;GACxF;;EAED,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;CAC1D,CAAC;;;AAGF,SAAS,QAAQ,CAAC,KAAK,EAAE;EACvB,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;CACjC;;;AAGD,SAAS,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;EAC3B,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;EAC/B,IAAI,IAAI,GAAG,OAAO,CAAC,wBAAwB,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;EACnF,OAAO,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;CAC3B;;AAED,SAAS,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;EAC1B,IAAI,IAAI,KAAK,WAAW,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;EAC3C,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;;EAE1B,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;GACrB;;EAED,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;;EAElC,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;IAC1C,OAAO,KAAK,CAAC;GACd;;;EAGD,IAAI,KAAK,CAAC,QAAQ,EAAE;;IAElB,IAAI,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;;IAEzD,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;GACrB;;EAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CACnD;;AAED,SAAS,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;EACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IACnB,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;;;IAIzC,IAAI,WAAW,GAAG,KAAK,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;IAC5H,IAAI,WAAW,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE;IACjC,aAAa,CAAC,KAAK,CAAC,CAAC;GACtB;;EAED,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;EAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;EACzB,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE;;EAEnC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;IAChE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC7B,aAAa,CAAC,KAAK,CAAC,CAAC;GACtB;;EAED,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;EAC5C,OAAO,IAAI,CAAC;CACb;;;;AAID,SAAS,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE;EAC7C,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;EAC5B,IAAI,IAAI,GAAG,OAAO,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;EAEzD,IAAI,IAAI,EAAE;IACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,QAAQ,CAAC;GAChE;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,aAAa,CAAC,KAAK,EAAE;EAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IACnB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;GACnD;CACF;;AAED,IAAI,WAAW,gBAAgB,MAAM,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;CAC7B,CAAC,CAAC;;AAEH,SAAS,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE;EACjE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,GAAG,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;CAC9J;;AAED,SAAS,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE;EACtE,IAAI,MAAM,EAAE,QAAQ,CAAC;;EAErB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EACtB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EACtB,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE9B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;IAC7B,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE;IAC5D,CAAC,QAAQ,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;GAC7F;;EAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;EAEtC,IAAI,KAAK,GAAG,CAAC,CAAC;;EAEd,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;IACzD,EAAE,KAAK,CAAC;GACT;;;EAGD,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;;EAEtB,OAAO,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,EAAE;IAC7D,EAAE,GAAG,CAAC;GACP;;;EAGD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;IAChC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;MACtC,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAChC,OAAO,CAAC,IAAI,CAAC;QACX,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;OACf,CAAC,CAAC;MACH,cAAc,CAAC,IAAI,CAAC;QAClB,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;OACf,CAAC,CAAC;KACJ;GACF;;EAED,IAAI,SAAS,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;EACnC,IAAI,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;;EAElC,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE;IACjD,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,YAAY,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG;MAClC,EAAE,EAAE,KAAK;MACT,IAAI,EAAE,MAAM;MACZ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;KACjB,CAAC;;IAEF,IAAI,SAAS,EAAE;MACb,cAAc,CAAC,IAAI,CAAC;QAClB,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,MAAM;OACb,CAAC,CAAC;KACJ;GACF;;;EAGD,IAAI,CAAC,SAAS,EAAE;IACd,cAAc,CAAC,IAAI,CAAC;MAClB,EAAE,EAAE,SAAS;MACb,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;MACjC,KAAK,EAAE,IAAI,CAAC,MAAM;KACnB,CAAC,CAAC;GACJ;CACF;;AAED,SAAS,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE;EACvE,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EACtB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,GAAG,EAAE,aAAa,EAAE;IACjD,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,EAAE,GAAG,CAAC,aAAa,GAAG,QAAQ,GAAG,GAAG,IAAI,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC;IACrE,IAAI,SAAS,KAAK,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,EAAE,OAAO,EAAE;IACxD,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,GAAG;MAC7B,EAAE,EAAE,EAAE;MACN,IAAI,EAAE,IAAI;KACX,GAAG;MACF,EAAE,EAAE,EAAE;MACN,IAAI,EAAE,IAAI;MACV,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,GAAG;MACjC,EAAE,EAAE,QAAQ;MACZ,IAAI,EAAE,IAAI;KACX,GAAG,EAAE,KAAK,QAAQ,GAAG;MACpB,EAAE,EAAE,KAAK;MACT,IAAI,EAAE,IAAI;MACV,KAAK,EAAE,SAAS;KACjB,GAAG;MACF,EAAE,EAAE,SAAS;MACb,IAAI,EAAE,IAAI;MACV,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;GACJ,CAAC,CAAC;CACJ;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;EACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACvC,IAAI,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;;IAEtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE;MAC/C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;KACrB,MAAM;MACL,IAAI,IAAI,GAAG,KAAK,CAAC;;MAEjB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE;QAC9C,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;OAC3H;;MAED,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;MAEhC,QAAQ,KAAK,CAAC,EAAE;QACd,KAAK,SAAS;UACZ,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;UACxB,MAAM;;QAER,KAAK,KAAK;UACR,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;YAEvB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;WAClC,MAAM;YACL,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;WACzB;;UAED,MAAM;;QAER,KAAK,QAAQ;UACX,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;WACrB,MAAM;YACL,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;WAClB;;UAED,MAAM;;QAER;UACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;OAC/D;KACF;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,cAAc,GAAG,EAAE;;AAE5B,IAAI,cAAc,GAAG;EACnB,UAAU,EAAE,OAAO,KAAK,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW;EAC1E,UAAU,EAAE,OAAO,OAAO,KAAK,WAAW,GAAG,YAAoB,KAAK,YAAY,GAAG,cAAc,CAAC,IAAI,KAAK,gBAAgB;EAC7H,QAAQ,EAAE,IAAI;EACd,QAAQ,EAAE,IAAI;EACd,MAAM,EAAE,IAAI;CACb,CAAC;AACF,IAAI,KAAK,GAAG,SAAS,KAAK,CAAC,MAAM,EAAE;EACjC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;EACrC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACxC,CAAC;;AAEF,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE;IACrE,IAAI,MAAM,GAAG,IAAI,CAAC;;;EAGpB,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;IAC9D,IAAI,WAAW,GAAG,MAAM,CAAC;IACzB,MAAM,GAAG,IAAI,CAAC;IACd,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,SAAS,cAAc,CAAC,IAAI,EAAE;QACjC,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC;QAC1C,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;;MAEzD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,KAAK,EAAE,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;KACrH,CAAC;GACH;;;EAGD;IACE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;MAChC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;KACjF;;IAED,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE;MACtE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;KACpF;GACF;EACD,IAAI,MAAM,CAAC;;EAEX,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;IACrB,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;IAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,QAAQ,GAAG,IAAI,CAAC;;IAEpB,IAAI;MACF,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;MACvB,QAAQ,GAAG,KAAK,CAAC;KAClB,SAAS;;MAER,IAAI,QAAQ,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE;KACzD;;IAED,IAAI,MAAM,YAAY,OAAO,EAAE;MAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE;QACnC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;OAC5C,EAAE,UAAU,KAAK,EAAE;QAClB,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,KAAK,CAAC;OACb,CAAC,CAAC;KACJ;;IAED,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;GAC1C,MAAM;IACL,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,MAAM,KAAK,SAAS,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE;IAC1C,OAAO,MAAM,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;GAChD;CACF,CAAC;;AAEF,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,IAAI,EAAE;EACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;IACtB,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;GAC7G;;EAED,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;EAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EACnC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;EACnC,KAAK,CAAC,KAAK,EAAE,CAAC;EACd,OAAO,KAAK,CAAC;CACd,CAAC;;AAEF,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE;EACxE,IAAI,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;;EAExC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IAC7B,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;GAC9F;;EAED,IAAI,KAAK,CAAC,SAAS,EAAE;IACnB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;GACzD;;EAED,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;EACxB,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;EAChC,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;CAC7C,CAAC;;AAEF,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE;EAC7D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;CACzB,CAAC;;AAEF,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE;EAC7D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EACxB,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;CACjD,CAAC;;AAEF,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;;EAErE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;IACjB,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;GACpC;;;EAGD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,KAAK,EAAE,EAAE,OAAO,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CACtF,CAAC;;;;AAIF,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE;EACrE,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAChC,IAAI,UAAU,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC;EAC9D,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;;EAE7C,IAAI,UAAU,EAAE;IACd,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;MACnC,KAAK,CAAC,MAAM,EAAE,CAAC;MACf,MAAM,IAAI,KAAK,CAAC,mHAAmH,CAAC,CAAC;KACtI;;IAED,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;;MAEvB,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAC7C;;IAED,IAAI,KAAK,CAAC,OAAO,EAAE;MACjB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACjB,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,MAAM;OACd,CAAC,CAAC;MACH,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;QACxB,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI;OACnC,CAAC,CAAC;KACJ;GACF,MAAM;;IAEL,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;GAC9C;;EAED,KAAK,CAAC,MAAM,EAAE,CAAC;;EAEf,IAAI,KAAK,CAAC,OAAO,EAAE;IACjB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;GAC1D;;EAED,OAAO,MAAM,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CAChD,CAAC;;;;;;;;AAQF,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IAC9D,IAAI,MAAM,GAAG,IAAI,CAAC;;EAEpB,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;;EAE/B,IAAI,CAAC,KAAK,EAAE;IACV,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE;IAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;GAC9C;;;EAGD,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE;IACzB,OAAO,KAAK,CAAC;GACd;;EAED,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IACnB,OAAO,KAAK,CAAC,IAAI,CAAC;GACnB;;EAED,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;IACpB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;;IAE5C,IAAI,IAAI,CAAC,QAAQ,EAAE;;MAEjB,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;;QAE9B,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE;UACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE;SACrD;OACF,MAAM;QACL,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;UACpB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE;UACzB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE;SACxD,CAAC,CAAC;OACJ;KACF;;IAED,IAAI,IAAI,CAAC,MAAM,EAAE;MACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpB;;;;IAID,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,EAAE;MAC1C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC3B;;IAED,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;MACzB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;KACnE;GACF;;EAED,OAAO,KAAK,CAAC,IAAI,CAAC;CACnB,CAAC;;;;;;;AAOF,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACzE,IAAI,MAAM,GAAG,IAAI,CAAC;;EAEpB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;;EAE9B,IAAI,KAAK,EAAE;IACT,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;;MAEpB,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC7C;;IAED,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;GACnB;;EAED,IAAI,WAAW,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;;EAEhD,IAAI,gBAAgB,GAAG,UAAU,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IACpD,IAAI,KAAK,KAAK,MAAM,EAAE;MACpB,MAAM,KAAK,CAAC,mCAAmC,CAAC,CAAC;KAClD;;;IAGD,IAAI,WAAW,GAAG,CAAC,CAAC,KAAK,IAAI,MAAM,KAAK,IAAI,CAAC;;IAE7C,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,IAAI,IAAI,GAAG,WAAW,IAAI,WAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;;MAE9F,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;;MAE5C,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;QAClB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;OAC7B;;;MAGD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;QACvD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;OACtB,MAAM;QACL,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;UAClC,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;OACJ;;;MAGD,IAAI,WAAW,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;KAC3D;SACI,IAAI,WAAW,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;QACjD,OAAO;OACR;WACI,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;UACpD,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;SAC/B;;IAEL,IAAI,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE;MAClC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KACrC;GACF,CAAC;;EAEF,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;EAC7B,OAAO,IAAI,CAAC;CACb,CAAC;;AAEF,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AACxB,AAqBA;;;;;;AAMA,IAAI,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;;;;;;AAQpD,IAAI,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;;;;;AAOpD,IAAI,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;;;;AAMpD,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;;;;;;;;;AAUhD,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AClkCjC,SAAS,wBAAwB,CAAC,IAAI,EAAE;CACtD,IAAI,MAAM,CAAC;CACX,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;CAEzB,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;EACjC,IAAI,MAAM,CAAC,UAAU,EAAE;GACtB,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;GAC3B,MAAM;GACN,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;GAC9B,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;GAC3B;EACD,MAAM;EACN,MAAM,GAAG,cAAc,CAAC;EACxB;;CAED,OAAO,MAAM,CAAC;CACd;;AChBD;AACA,AACA;AACA,IAAI,IAAI,CAAC;;AAET,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;EAC/B,IAAI,GAAG,IAAI,CAAC;CACb,MAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;EACxC,IAAI,GAAG,MAAM,CAAC;CACf,MAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;EACxC,IAAI,GAAG,MAAM,CAAC;CACf,MAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;EACxC,IAAI,GAAG,MAAM,CAAC;CACf,MAAM;EACL,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;CAClC;;AAED,IAAI,MAAM,GAAGA,wBAAQ,CAAC,IAAI,CAAC,CAAC;;ACf5B;;;;;;AAMA,IAAI,YAAY,GAAG,SAAS,YAAY,GAAG;EACzC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACpE,CAAC;;AAEF,IAAI,WAAW,GAAG;EAChB,IAAI,EAAE,cAAc,GAAG,YAAY,EAAE;EACrC,OAAO,EAAE,iBAAiB,GAAG,YAAY,EAAE;EAC3C,oBAAoB,EAAE,SAAS,oBAAoB,GAAG;IACpD,OAAO,8BAA8B,GAAG,YAAY,EAAE,CAAC;GACxD;CACF,CAAC;;;;;;AAMF,SAAS,aAAa,CAAC,GAAG,EAAE;EAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,OAAO,KAAK,CAAC;EAC1D,IAAI,KAAK,GAAG,GAAG,CAAC;;EAEhB,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;IAC5C,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;GACtC;;EAED,OAAO,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;CAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BD,SAAS,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE;EACtD,IAAI,KAAK,CAAC;;EAEV,IAAI,OAAO,cAAc,KAAK,UAAU,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;IAClJ,MAAM,IAAI,KAAK,CAAC,2DAA2D,GAAG,8DAA8D,GAAG,gCAAgC,CAAC,CAAC;GAClL;;EAED,IAAI,OAAO,cAAc,KAAK,UAAU,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;IAC3E,QAAQ,GAAG,cAAc,CAAC;IAC1B,cAAc,GAAG,SAAS,CAAC;GAC5B;;EAED,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;IACnC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;MAClC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC5D;;IAED,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;GACvD;;EAED,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;IACjC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;GAC3D;;EAED,IAAI,cAAc,GAAG,OAAO,CAAC;EAC7B,IAAI,YAAY,GAAG,cAAc,CAAC;EAClC,IAAI,gBAAgB,GAAG,EAAE,CAAC;EAC1B,IAAI,aAAa,GAAG,gBAAgB,CAAC;EACrC,IAAI,aAAa,GAAG,KAAK,CAAC;;;;;;;;;EAS1B,SAAS,4BAA4B,GAAG;IACtC,IAAI,aAAa,KAAK,gBAAgB,EAAE;MACtC,aAAa,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC;KAC1C;GACF;;;;;;;;EAQD,SAAS,QAAQ,GAAG;IAClB,IAAI,aAAa,EAAE;MACjB,MAAM,IAAI,KAAK,CAAC,oEAAoE,GAAG,6DAA6D,GAAG,yEAAyE,CAAC,CAAC;KACnO;;IAED,OAAO,YAAY,CAAC;GACrB;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BD,SAAS,SAAS,CAAC,QAAQ,EAAE;IAC3B,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;MAClC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC5D;;IAED,IAAI,aAAa,EAAE;MACjB,MAAM,IAAI,KAAK,CAAC,qEAAqE,GAAG,sFAAsF,GAAG,oFAAoF,GAAG,oFAAoF,CAAC,CAAC;KAC/V;;IAED,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,4BAA4B,EAAE,CAAC;IAC/B,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,OAAO,SAAS,WAAW,GAAG;MAC5B,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO;OACR;;MAED,IAAI,aAAa,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,gFAAgF,GAAG,oFAAoF,CAAC,CAAC;OAC1L;;MAED,YAAY,GAAG,KAAK,CAAC;MACrB,4BAA4B,EAAE,CAAC;MAC/B,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;MAC5C,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KAChC,CAAC;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BD,SAAS,QAAQ,CAAC,MAAM,EAAE;IACxB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;MAC1B,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,0CAA0C,CAAC,CAAC;KACjG;;IAED,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;MACtC,MAAM,IAAI,KAAK,CAAC,qDAAqD,GAAG,iCAAiC,CAAC,CAAC;KAC5G;;IAED,IAAI,aAAa,EAAE;MACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACvD;;IAED,IAAI;MACF,aAAa,GAAG,IAAI,CAAC;MACrB,YAAY,GAAG,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;KACrD,SAAS;MACR,aAAa,GAAG,KAAK,CAAC;KACvB;;IAED,IAAI,SAAS,GAAG,gBAAgB,GAAG,aAAa,CAAC;;IAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACzC,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MAC5B,QAAQ,EAAE,CAAC;KACZ;;IAED,OAAO,MAAM,CAAC;GACf;;;;;;;;;;;;;EAaD,SAAS,cAAc,CAAC,WAAW,EAAE;IACnC,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;MACrC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;;IAED,cAAc,GAAG,WAAW,CAAC;;;;;IAK7B,QAAQ,CAAC;MACP,IAAI,EAAE,WAAW,CAAC,OAAO;KAC1B,CAAC,CAAC;GACJ;;;;;;;;;EASD,SAAS,UAAU,GAAG;IACpB,IAAI,IAAI,CAAC;;IAET,IAAI,cAAc,GAAG,SAAS,CAAC;IAC/B,OAAO,IAAI,GAAG;;;;;;;;;MASZ,SAAS,EAAE,SAAS,SAAS,CAAC,QAAQ,EAAE;QACtC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE;UACrD,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;SAC/D;;QAED,SAAS,YAAY,GAAG;UACtB,IAAI,QAAQ,CAAC,IAAI,EAAE;YACjB,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;WAC3B;SACF;;QAED,YAAY,EAAE,CAAC;QACf,IAAI,WAAW,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;QAC/C,OAAO;UACL,WAAW,EAAE,WAAW;SACzB,CAAC;OACH;KACF,EAAE,IAAI,CAACC,MAAY,CAAC,GAAG,YAAY;MAClC,OAAO,IAAI,CAAC;KACb,EAAE,IAAI,CAAC;GACT;;;;;EAKD,QAAQ,CAAC;IACP,IAAI,EAAE,WAAW,CAAC,IAAI;GACvB,CAAC,CAAC;EACH,OAAO,KAAK,GAAG;IACb,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,QAAQ;IAClB,cAAc,EAAE,cAAc;GAC/B,EAAE,KAAK,CAACA,MAAY,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC;CAC5C;AACD,AAsNA;AACA,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;EACxC,IAAI,GAAG,IAAI,GAAG,EAAE;IACd,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;MAC9B,KAAK,EAAE,KAAK;MACZ,UAAU,EAAE,IAAI;MAChB,YAAY,EAAE,IAAI;MAClB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;GACJ,MAAM;IACL,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;GAClB;;EAED,OAAO,GAAG,CAAC;CACZ;;AAED,SAASC,SAAO,CAAC,MAAM,EAAE,cAAc,EAAE;EACvC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;EAE/B,IAAI,MAAM,CAAC,qBAAqB,EAAE;IAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;GAC7D;;EAED,IAAI,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE;IACpD,OAAO,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC;GAChE,CAAC,CAAC;EACH,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,cAAc,CAAC,MAAM,EAAE;EAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACzC,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;;IAEtD,IAAI,CAAC,GAAG,CAAC,EAAE;MACTA,SAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;QAC3C,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;OAC3C,CAAC,CAAC;KACJ,MAAM,IAAI,MAAM,CAAC,yBAAyB,EAAE;MAC3C,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;KAC3E,MAAM;MACLA,SAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;QACrC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;OAClF,CAAC,CAAC;KACJ;GACF;;EAED,OAAO,MAAM,CAAC;CACf;;;;;;;;;;;;AAYD,SAAS,OAAO,GAAG;EACjB,KAAK,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE;IACxF,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;GAC/B;;EAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO,UAAU,GAAG,EAAE;MACpB,OAAO,GAAG,CAAC;KACZ,CAAC;GACH;;EAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;GACjB;;EAED,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;IAClC,OAAO,YAAY;MACjB,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;KACtC,CAAC;GACH,CAAC,CAAC;CACJ;;;;;;;;;;;;;;;;;;;AAmBD,SAAS,eAAe,GAAG;EACzB,KAAK,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE;IAC9F,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;GACrC;;EAED,OAAO,UAAU,WAAW,EAAE;IAC5B,OAAO,YAAY;MACjB,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;;MAEjD,IAAI,SAAS,GAAG,SAAS,QAAQ,GAAG;QAClC,MAAM,IAAI,KAAK,CAAC,iEAAiE,GAAG,yDAAyD,CAAC,CAAC;OAChJ,CAAC;;MAEF,IAAI,aAAa,GAAG;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,SAAS,QAAQ,GAAG;UAC5B,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;SAC3C;OACF,CAAC;MACF,IAAI,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,UAAU,EAAE;QAChD,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;OAClC,CAAC,CAAC;MACH,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;MACzD,OAAO,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE;QAC/B,QAAQ,EAAE,SAAS;OACpB,CAAC,CAAC;KACJ,CAAC;GACH,CAAC;CACH;;ACvoBD,SAAS,qBAAqB,CAAC,aAAa,EAAE;EAC5C,OAAO,UAAU,IAAI,EAAE;IACrB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ;QACxB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC7B,OAAO,UAAU,IAAI,EAAE;MACrB,OAAO,UAAU,MAAM,EAAE;QACvB,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;UAChC,OAAO,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;SAClD;;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;OACrB,CAAC;KACH,CAAC;GACH,CAAC;CACH;;AAED,IAAI,KAAK,GAAG,qBAAqB,EAAE,CAAC;AACpC,KAAK,CAAC,iBAAiB,GAAG,qBAAqB,CAAC;;ACjBhD,SAAS,OAAO,GAAG;CAClB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;CACf,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;CAC1B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;;CAEd,OAAO,IAAI,CAAC;CACZ;;AAED,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE;CACrC,IAAI,KAAK,CAAC;;CAEV,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;EAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;EACzB;;CAED,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1B,IAAI,KAAK,IAAI,CAAC,EAAE;EACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACjC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;EAC5B;;CAED,OAAO,SAAS,CAAC;CACjB,CAAC;;AAEF,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CAC1C,IAAI,KAAK,CAAC;;CAEV,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;EAC1D,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;EACxB,OAAO,IAAI,CAAC;EACZ;;CAED,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1B,IAAI,KAAK,IAAI,CAAC,EAAE;EACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;EAC3B,OAAO,IAAI,CAAC;EACZ;;CAED,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;CACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;;CAEZ,OAAO,IAAI,CAAC;CACZ,CAAC;;AAEF,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE;CACxC,IAAI,KAAK,CAAC;;CAEV,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;EAC1D,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;EAC1B;;CAED,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1B,IAAI,KAAK,IAAI,CAAC,EAAE;EACf,IAAI,CAAC,IAAI,EAAE,CAAC;EACZ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACrC;;CAED,OAAO,SAAS,CAAC;CACjB,CAAC;;;;AAIF,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE;CACrC,IAAI,KAAK,CAAC;;CAEV,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;EAC1D,OAAO,IAAI,CAAC;EACZ;;CAED,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1B,IAAI,KAAK,IAAI,CAAC,EAAE;EACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACjC,OAAO,IAAI,CAAC;EACZ;;CAED,OAAO,KAAK,CAAC;CACb,CAAC;;AAEF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,QAAQ,EAAE,OAAO,EAAE;CACvD,IAAI,CAAC,CAAC;CACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;EAC/B,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACzE;CACD,CAAC;;AAEF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE;CACzC,IAAI,CAAC,CAAC;CACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;EAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;GACxC,OAAO,CAAC,CAAC;GACT;EACD;CACD,OAAO,CAAC,CAAC,CAAC;CACV,CAAC;;;AAGF,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;CAChD,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC;CACzD,CAAC;;AAEF,WAAc,GAAG,OAAO;;ACtGxB,gBAAc,GAAG,SAAS,YAAY,EAAE;CACvC,IAAI,OAAO,GAAG,KAAK,UAAU,IAAI,YAAY,EAAE;EAC9C,IAAI,OAAO,GAAGC,OAAoB,CAAC;EACnC,OAAO,IAAI,OAAO,EAAE,CAAC;EACrB;MACI;EACJ,OAAO,IAAI,GAAG,EAAE,CAAC;EACjB;CACD;;ACND,gBAAc,GAAG,UAAU,KAAK,EAAE;CACjC,IAAI,KAAK,GAAG,IAAIC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,MAAM,CAAC;EAChF,GAAG,GAAG,EAAE,CAAC;;CAEV,OAAO,UAAU,EAAE,EAAE;EACpB,IAAI,YAAY,GAAG,YAAY;GAC9B,IAAI,YAAY,GAAG,KAAK;IACvB,MAAM;IACN,QAAQ;IACR,kBAAkB,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;IACzC,OAAO,GAAG,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;IACvC,UAAU,GAAG,IAAI;IACjB,CAAC,CAAC;;GAEH,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,KAAK,CAAC,KAAK,YAAY,CAAC,OAAO,KAAK,kBAAkB,GAAG,CAAC,EAAE;IAC5G,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACpG;;;GAGD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE;IACxC,OAAO,CAAC,CAAC,CAAC,GAAG;KACZ,SAAS,EAAE,YAAY;KACvB,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;KACjB,CAAC;;;;IAIF,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;KACnC,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9C,SAAS;KACT;;IAED,UAAU,GAAG,KAAK,CAAC;;;IAGnB,MAAM,GAAG,IAAIA,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,MAAM,CAAC,CAAC;IAC/E,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACvC,YAAY,GAAG,MAAM,CAAC;IACtB;;;GAGD,IAAI,UAAU,EAAE;IACf,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE;KACpD,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAC3D;SACI;KACJ,UAAU,GAAG,KAAK,CAAC;KACnB;IACD;;;GAGD,IAAI,CAAC,UAAU,EAAE;IAChB,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1D;;;GAGD,IAAI,KAAK,GAAG,CAAC,EAAE;IACd,OAAO,CAAC,kBAAkB,CAAC,GAAG;KAC7B,SAAS,EAAE,YAAY;KACvB,GAAG,EAAE,SAAS,CAAC,kBAAkB,CAAC;KAClC,CAAC;;IAEF,IAAI,UAAU,EAAE;KACf,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAClC;SACI;KACJ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAClB;;IAED,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE;KACvB,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;KAChC;IACD;;GAED,YAAY,CAAC,WAAW,GAAG,UAAU,CAAC;GACtC,YAAY,CAAC,OAAO,GAAG,kBAAkB,GAAG,CAAC,CAAC;;GAE9C,OAAO,QAAQ,CAAC;GAChB,CAAC;;EAEF,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;EAC3B,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC;EACjC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;EAC3B,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC;;EAEvB,OAAO,YAAY,CAAC;EACpB,CAAC;CACF,CAAC;;;AAGF,SAAS,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE;CAC1C,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM;EACtB,UAAU,GAAG,OAAO,CAAC,MAAM;EAC3B,OAAO;EACP,CAAC,EAAE,EAAE,CAAC;;CAEP,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EAC5B,OAAO,GAAG,IAAI,CAAC;EACf,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;GACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE;IAC9C,OAAO,GAAG,KAAK,CAAC;IAChB,MAAM;IACN;GACD;EACD,IAAI,OAAO,EAAE;GACZ,MAAM;GACN;EACD;;CAED,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9B;;;AAGD,SAAS,kBAAkB,CAAC,UAAU,EAAE;CACvC,IAAI,aAAa,GAAG,UAAU,CAAC,MAAM;EACpC,UAAU,GAAG,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC;EAC1C,GAAG;EACH,CAAC,CAAC;;CAEH,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;;;CAG5C,KAAK,CAAC,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EACxC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EAC3B,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;;EAE/C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;GACtB,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;GAC5C,MAAM;GACN,MAAM;GACN;EACD;CACD;;;AAGD,SAAS,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE;CAC5B,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC;;;ACrI1D,IAAI,YAAY,GAAGC,mBAAa,EAAE,CAAC;;;;;;;;;;AAUnC,IAAI,yBAAyB,GAAG,OAAO,MAAM,KAAK,WAAW,GAAGC,qBAAe,GAAGC,eAAS,CAAC;AAC5F,SAAS,oBAAoB,CAAC,OAAO,EAAE;EACrC,OAAO,SAAS,aAAa,CAAC,QAAQ,EAAE;IACtC,IAAI,KAAK,GAAGC,gBAAU,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,WAAW,GAAGC,YAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,QAAQ,GAAGA,YAAM,EAAE,CAAC;IACxB,IAAI,UAAU,GAAGA,YAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,yBAAyB,GAAGA,YAAM,EAAE,CAAC;;IAEzC,IAAI,WAAW,GAAGC,gBAAU,CAAC,UAAU,CAAC,EAAE;MACxC,OAAO,CAAC,GAAG,CAAC,CAAC;KACd,EAAE,CAAC,CAAC;QACD,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;;IAEjC,IAAI,yBAAyB,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE;MAC3G,IAAI;QACF,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;OAC/C,CAAC,OAAO,GAAG,EAAE;QACZ,IAAI,YAAY,GAAG,iEAAiE,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC;;QAEzG,IAAI,yBAAyB,CAAC,OAAO,EAAE;UACrC,YAAY,IAAI,uDAAuD,GAAG,yBAAyB,CAAC,OAAO,CAAC,KAAK,GAAG,2BAA2B,CAAC;SACjJ;;QAED,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;OAC/B;KACF;;IAED,yBAAyB,CAAC,YAAY;MACpC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;MAC/B,yBAAyB,CAAC,OAAO,GAAG,SAAS,CAAC;KAC/C,CAAC,CAAC;IACH,yBAAyB,CAAC,YAAY;MACpC,IAAI,aAAa,GAAG,SAAS,aAAa,GAAG;QAC3C,IAAI;UACF,IAAI,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;;UAErD,IAAI,QAAQ,KAAK,QAAQ,CAAC,OAAO,EAAE;YACjC,OAAO;WACR;;UAED,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC;SAC7B,CAAC,OAAO,GAAG,EAAE;;;;;UAKZ,yBAAyB,CAAC,OAAO,GAAG,GAAG,CAAC;SACzC;;QAED,IAAI,UAAU,CAAC,OAAO,EAAE;UACtB,WAAW,CAAC,EAAE,CAAC,CAAC;SACjB;OACF,CAAC;;MAEF,IAAI,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;MACjD,aAAa,EAAE,CAAC;MAChB,OAAO,YAAY;QACjB,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,WAAW,EAAE,CAAC;OACf,CAAC;KACH,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,QAAQ,CAAC,OAAO,CAAC;GACzB,CAAC;CACH;AACD,IAAI,aAAa,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;AACvD,SAAS,sBAAsB,CAAC,OAAO,EAAE;EACvC,OAAO,SAAS,eAAe,CAAC,UAAU,EAAE;IAC1C,IAAI,KAAK,GAAGF,gBAAU,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;GACvC,CAAC;CACH;AACD,IAAI,eAAe,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;AAC3D,SAAS,uBAAuB,CAAC,OAAO,EAAE;EACxC,OAAO,SAAS,gBAAgB,GAAG;IACjC,IAAI,KAAK,GAAGA,gBAAU,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC,QAAQ,CAAC;GACvB,CAAC;CACH;AACD,IAAI,gBAAgB,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;AAC7D,SAAS,QAAQ,GAAG;EAClB,OAAOA,gBAAU,CAAC,YAAY,CAAC,CAAC;CACjC;AACD,SAAS,gBAAgB,GAAG;EAC1B,OAAO;IACL,eAAe,EAAE,eAAe;IAChC,gBAAgB,EAAE,gBAAgB;IAClC,aAAa,EAAE,aAAa;IAC5B,QAAQ,EAAE,QAAQ;GACnB,CAAC;CACH;;AAED,SAAS,QAAQ,GAAG;EAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACzC,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;MAE1B,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;QACtB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;UACrD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SAC3B;OACF;KACF;;IAED,OAAO,MAAM,CAAC;GACf,CAAC;;EAEF,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CACxC;;AAED,IAAI,YAAY,GAAG,YAAY,CAAC;AAChC,IAAI,cAAc,GAAG,cAAc,CAAC;AACpC,IAAI,cAAc,GAAG,oBAAoB,CAAC;AAC1C,IAAI,aAAa,GAAG,aAAa,CAAC;AAClC,IAAI,aAAa,GAAG,aAAa,CAAC;AAClC,IAAI,WAAW,GAAG,WAAW,CAAC;AAC9B,AAiBA,IAAI,MAAM,GAAG,SAAS,MAAM,CAAC,EAAE,EAAE;EAC/B,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;EACtB,OAAO,EAAE,CAAC;CACX,CAAC;AACF,AA8BA;AACA,IAAI,aAAa,GAAG,SAAS,aAAa,CAAC,CAAC,EAAE;EAC5C,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC;CAC7F,CAAC;AACF,IAAIG,KAAG,GAAG,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE;EACnC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE;IACrC,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;GAClD,EAAE,MAAM,CAAC,CAAC;CACZ,CAAC;AACF,IAAIC,KAAG,GAAG,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;EAC1C,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACnC,IAAI,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;MAC3B,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KAClB,MAAM;MACL,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;KAC3B;;IAED,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;GACjB,EAAE,MAAM,CAAC,CAAC;CACZ,CAAC;;AAEF,IAAI,MAAM,GAAG,SAAS,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE;EAClE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAO,UAAU,CAAC;GACnB;;EAED,IAAI,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;;EAE1C,IAAI,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;;EAEzB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;IAC5B,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;GAC5B,MAAM;IACL,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;GACzE;;EAED,OAAO,QAAQ,CAAC;CACjB,CAAC;;AAEF,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY;MAChC,YAAY,GAAG,IAAI,CAAC,YAAY;MAChC,UAAU,GAAG,IAAI,CAAC,UAAU;MAC5B,KAAK,GAAG,IAAI,CAAC,KAAK;MAClB,eAAe,GAAG,IAAI,CAAC,eAAe;MACtC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;;EAEjC,SAAS,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IACtC,IAAI,YAAY,EAAE;MAChB,IAAI,QAAQ,GAAGD,KAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;MAEhC,IAAI,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;;MAExB,IAAI,QAAQ,KAAK,IAAI,EAAE;QACrB,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;OAClC;;MAED,OAAO,KAAK,CAAC;KACd;;IAED,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;;IAE/B,IAAI,OAAO,GAAGA,KAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;IAE/B,EAAE,CAAC,OAAO,CAAC,CAAC;IACZ,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;GAC3B;;EAED,IAAI,YAAY,GAAG,YAAY,CAAC;EAChC,IAAI,iBAAiB,GAAG,EAAE,CAAC;EAC3B,IAAI,cAAc,GAAG,EAAE,CAAC;EACxB,IAAI,kBAAkB,GAAG,EAAE,CAAC;EAC5B,IAAI,YAAY,GAAG,EAAE,CAAC;EACtB,IAAI,kBAAkB,GAAG,EAAE,CAAC;EAC5B,IAAI,cAAc,GAAG,EAAE,CAAC;EACxB,IAAI,sBAAsB,GAAG,EAAE,CAAC;EAChC,IAAI,iBAAiB,GAAG,EAAE,CAAC;EAC3B,IAAI,mBAAmB,GAAG,EAAE,CAAC;EAC7B,IAAI,aAAa,GAAG;IAClB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,YAAY;GAC3B,CAAC;;EAEF,IAAI,6BAA6B,GAAG,SAAS,6BAA6B,CAAC,OAAO,EAAE,UAAU,EAAE;IAC9F,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;MACjD,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;MACzB,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;MACxC,IAAI,IAAI,GAAG;QACT,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,IAAI;OACX,CAAC;;MAEF,IAAI,kBAAkB,GAAG,SAAS,kBAAkB,GAAG;QACrD,IAAI,gBAAgB,GAAGA,KAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;;QAErD,IAAI,gBAAgB,IAAI,GAAG,IAAI,gBAAgB,EAAE;UAC/CC,KAAG,CAAC,IAAI,EAAE,YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;SAChD,MAAM;UACLA,KAAG,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;SAChC;OACF,CAAC;;MAEF,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QAC/B,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;UAChD,IAAI,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,SAAS,GAAG,WAAW,CAAC;UAC3D,IAAI,IAAI,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;UACzC,IAAI,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;UAC9D,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC;UAC5B,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;UACvB,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;UAChC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;;UAE5B,kBAAkB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;;UAEjC,IAAI,aAAa,GAAG,SAAS,aAAa,CAAC,OAAO,EAAE;YAClD,IAAI,gBAAgB,GAAG;cACrB,IAAI,EAAE,IAAI;cACV,OAAO,EAAE,OAAO;aACjB,CAAC;;YAEF,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,eAAe,EAAE;cACvD,OAAO,CAAC,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;aACjE;;YAED,IAAI,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACnD,OAAO,MAAM,CAAC;WACf,CAAC;;UAEF,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;UAC1B,iBAAiB,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;;UAExC,IAAI,GAAG,KAAK,uBAAuB,EAAE;YACnC,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;cACzB,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;cAChCA,KAAG,CAAC,IAAI,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC;aAClD,MAAM;cACLA,KAAG,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;aAC1C;WACF;SACF,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;UACrD,IAAI,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,QAAQ,GAAG,UAAU,CAAC;;UAEzD,IAAI,KAAK,GAAG,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;UAE3C,IAAI,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;UAC3D,SAAS,CAAC,UAAU,GAAG,GAAG,CAAC;UAC3B,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;UACvB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;UAC/B,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;;UAE3B,IAAI,YAAY,GAAG,SAAS,YAAY,CAAC,OAAO,EAAE;YAChD,IAAI,OAAO,GAAG;cACZ,QAAQ,EAAE,UAAU,CAAC,QAAQ;cAC7B,QAAQ,EAAE,SAAS,QAAQ,GAAG;gBAC5B,OAAOD,KAAG,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;eAC/C;cACD,eAAe,EAAE,SAAS,eAAe,GAAG;gBAC1C,OAAO,cAAc,CAAC;eACvB;cACD,aAAa,EAAE,UAAU,CAAC,QAAQ;cAClC,UAAU,EAAE,UAAU;cACtB,IAAI,EAAE,IAAI;aACX,CAAC;;YAEF,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,eAAe,EAAE;cACrD,OAAO,CAAC,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;aAChE;;YAED,OAAO,KAAK,CAACA,KAAG,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;WACjE,CAAC;;UAEFC,KAAG,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;;UAEtC,IAAI,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;UAClC,IAAI,WAAW,GAAG,KAAK,GAAG,WAAW,CAAC;UACtC,IAAI,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;;UAEhC,IAAI,cAAc,GAAG,SAAS,cAAc,CAAC,OAAO,EAAE;YACpD,IAAI,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE;cAC9C,UAAU,CAAC,QAAQ,CAAC;gBAClB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,GAAG;eACX,CAAC,CAAC;cACH,UAAU,CAAC,QAAQ,CAAC;gBAClB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,GAAG;eACX,CAAC,CAAC;aACJ,CAAC;;YAEF,IAAI,eAAe,GAAG,SAAS,eAAe,CAAC,MAAM,EAAE;cACrD,UAAU,CAAC,QAAQ,CAAC;gBAClB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,MAAM;eACf,CAAC,CAAC;cACH,UAAU,CAAC,QAAQ,CAAC;gBAClB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,MAAM;eACf,CAAC,CAAC;aACJ,CAAC;;YAEF,UAAU,CAAC,QAAQ,CAAC;cAClB,IAAI,EAAE,SAAS;cACf,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;;YAEH,IAAI;cACF,IAAI,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY;gBAC3C,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;eAC9B,CAAC,CAAC;;cAEH,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;gBACnE,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,QAAQ,EAAE;kBACrC,eAAe,CAAC,QAAQ,CAAC,CAAC;kBAC1B,OAAO,QAAQ,CAAC;iBACjB,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;kBACtB,aAAa,CAAC,GAAG,CAAC,CAAC;kBACnB,MAAM,GAAG,CAAC;iBACX,CAAC,CAAC;eACJ;;cAED,eAAe,CAAC,MAAM,CAAC,CAAC;cACxB,OAAO,MAAM,CAAC;aACf,CAAC,OAAO,GAAG,EAAE;cACZ,aAAa,CAAC,GAAG,CAAC,CAAC;cACnB,MAAM,GAAG,CAAC;aACX;WACF,CAAC;;UAEF,cAAc,CAAC,IAAI,GAAG,KAAK,CAAC;UAC5B,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC;UACrC,cAAc,CAAC,WAAW,GAAG,WAAW,CAAC;UACzC,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;UACnC,iBAAiB,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC;;UAE1C,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;YACxB,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChCA,KAAG,CAAC,IAAI,EAAE,sBAAsB,EAAE,cAAc,CAAC,CAAC;WACnD,MAAM;YACLA,KAAG,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;WAC3C;SACF,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;UAChC,IAAI,MAAM,GAAGD,KAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;;UAE3C,IAAI,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;UACzC,IAAI,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;;UAE9C,IAAI,sBAAsB,GAAG,SAAS,sBAAsB,CAAC,CAAC,EAAE;YAC9D,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE;cAC5B,YAAY,EAAE,IAAI;cAClB,UAAU,EAAE,IAAI;cAChB,GAAG,EAAE,SAAS,KAAK,GAAG;gBACpB,IAAI,UAAU,CAAC;;gBAEf,IAAI,aAAa,CAAC,WAAW,EAAE;kBAC7B,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC;iBACzC,MAAM,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI,EAAE;kBACtC,OAAO,SAAS,CAAC;iBAClB,MAAM;kBACL,IAAI;oBACF,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;mBACpC,CAAC,OAAO,GAAG,EAAE;AAChC,AAGA;oBACoB,OAAO,SAAS,CAAC;mBAClB;iBACF;;gBAED,IAAI,KAAK,GAAGA,KAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;;gBAExC,IAAI,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,QAAQ,EAAE;kBAC/D,OAAO,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;iBACpC,CAAC,CAAC;gBACH,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;eAC/C;aACF,CAAC,CAAC;WACJ,CAAC;;UAEF,sBAAsB,CAAC,MAAM,CAAC,CAAC;UAC/B,kBAAkB,CAAC,IAAI,CAAC;YACtB,GAAG,EAAE,GAAG;YACR,UAAU,EAAE,UAAU;YACtB,sBAAsB,EAAE,sBAAsB;WAC/C,CAAC,CAAC;SACJ,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;UAC/B,cAAc,CAAC,IAAI,CAAC;YAClB,GAAG,EAAE,GAAG;YACR,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,KAAK;WACf,CAAC,CAAC;SACJ,MAAM;UACL,kBAAkB,EAAE,CAAC;SACtB;OACF,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;QAC/B,IAAI,QAAQ,GAAGA,KAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;;QAEvC,IAAI,QAAQ,IAAI,IAAI,EAAE;UACpBC,KAAG,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;SAC7B;;QAED,6BAA6B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;OAC5C,MAAM;QACL,kBAAkB,EAAE,CAAC;OACtB;KACF,CAAC,CAAC;GACJ,CAAC;;EAEF,6BAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;EACzC,mBAAmB,CAAC,OAAO,CAAC,UAAU,qBAAqB,EAAE;IAC3D,IAAI,YAAY,GAAG,qBAAqB,CAAC,cAAc,CAAC,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACjG,IAAI,OAAO,GAAG,YAAY,CAAC,cAAc,CAACD,KAAG,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC;IACpG,IAAI,WAAW,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,EAAE,MAAM,EAAE;MAC7F,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACjF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;OACvB,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACrC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;OAClB;;MAED,OAAO,GAAG,CAAC;KACZ,EAAE,EAAE,CAAC,CAAC;IACP,YAAY,CAAC,eAAe,GAAG,WAAW,CAAC;IAC3C,WAAW,CAAC,OAAO,CAAC,UAAU,UAAU,EAAE;MACxC,IAAI,WAAW,GAAG,iBAAiB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;MACtD,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;MACvD,iBAAiB,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;KAC7C,CAAC,CAAC;GACJ,CAAC,CAAC;;EAEH,IAAI,aAAa,GAAG,SAAS,aAAa,GAAG;IAC3C,IAAI,sBAAsB,GAAG,SAAS,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE;MAC/F,OAAO,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,KAAK,EAAE;QACjD,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;OAC7C,CAAC,CAAC;KACJ,CAAC;;IAEF,IAAI,iBAAiB,GAAG,SAAS,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE;MAChE,IAAI,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;;MAEpD,IAAI,aAAa,EAAE;QACjB,IAAI,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,cAAc,CAAC,CAAC;QAC9E,OAAO,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;OAChF;;MAED,OAAO,KAAK,CAAC;KACd,CAAC;;IAEF,IAAI,wBAAwB,GAAG,SAAS,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE;MAC9E,OAAO,cAAc,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE;QACjD,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU;YAC7B,GAAG,GAAG,KAAK,CAAC,GAAG;YACf,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;QACxB,OAAO,aAAa,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,KAAK,EAAE;UACrD,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;UACrC,OAAO,KAAK,CAAC;SACd,CAAC,CAAC;OACJ,EAAE,KAAK,CAAC,CAAC;KACX,CAAC;;IAEF,IAAI,WAAW,GAAG,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;MACpD,IAAI,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;MACzD,IAAI,IAAI,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,iBAAiB,CAAC;;MAE/G,IAAI,KAAK,KAAK,IAAI,EAAE;QAClB,kBAAkB,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;UAC1C,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU;cAC7B,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;UAC1D,sBAAsB,CAACA,KAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;SAC/C,CAAC,CAAC;OACJ;;MAED,OAAO,IAAI,CAAC;KACb,CAAC;;IAEF,OAAO,WAAW,CAAC;GACpB,CAAC;;EAEF,OAAO;IACL,iBAAiB,EAAE,iBAAiB;IACpC,cAAc,EAAE,cAAc;IAC9B,kBAAkB,EAAE,kBAAkB;IACtC,aAAa,EAAE,aAAa;IAC5B,YAAY,EAAE,YAAY;IAC1B,sBAAsB,EAAE,sBAAsB;IAC9C,iBAAiB,EAAE,iBAAiB;IACpC,OAAO,EAAE,eAAe,CAAC,aAAa,EAAE,CAAC;GAC1C,CAAC;CACH;;AAED,SAASE,aAAW,CAAC,KAAK,EAAE,OAAO,EAAE;EACnC,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE;IACtB,OAAO,GAAG,EAAE,CAAC;GACd;;EAED,IAAI,QAAQ,GAAG,OAAO;MAClB,SAAS,GAAG,QAAQ,CAAC,OAAO;MAC5B,iBAAiB,GAAG,QAAQ,CAAC,QAAQ;MACrC,QAAQ,GAAG,iBAAiB,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,iBAAiB;MAClE,qBAAqB,GAAG,QAAQ,CAAC,YAAY;MAC7C,YAAY,GAAG,qBAAqB,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,qBAAqB;MAC/E,kBAAkB,GAAG,QAAQ,CAAC,SAAS;MACvC,SAAS,GAAG,kBAAkB,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,kBAAkB;MACnE,qBAAqB,GAAG,QAAQ,CAAC,YAAY;MAC7C,YAAY,GAAG,qBAAqB,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,qBAAqB;MAC5E,UAAU,GAAG,QAAQ,CAAC,UAAU;MAChC,mBAAmB,GAAG,QAAQ,CAAC,UAAU;MACzC,UAAU,GAAG,mBAAmB,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,mBAAmB;MACtE,oBAAoB,GAAG,QAAQ,CAAC,WAAW;MAC3C,WAAW,GAAG,oBAAoB,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,oBAAoB;MAC5E,aAAa,GAAG,QAAQ,CAAC,IAAI;MAC7B,SAAS,GAAG,aAAa,KAAK,KAAK,CAAC,GAAG,gBAAgB,GAAG,aAAa;MACvE,qBAAqB,GAAG,QAAQ,CAAC,eAAe;MAChD,eAAe,GAAG,qBAAqB,KAAK,KAAK,CAAC,GAAG,UAAU,WAAW,EAAE;IAC9E,OAAO,WAAW,CAAC;GACpB,GAAG,qBAAqB,CAAC;;EAE1B,IAAI,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,QAAQ,EAAE;IACzD,OAAO,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE;MAC5B,qBAAqB,EAAE,MAAM,CAAC,UAAU,KAAK,EAAE,OAAO,EAAE;QACtD,OAAO,OAAO,CAAC;OAChB,CAAC;KACH,CAAC,CAAC;GACJ,CAAC;;EAEF,IAAI,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;EAC9C,IAAI,aAAa,GAAG,EAAE,CAAC;EACvB,IAAI,UAAU,GAAG,EAAE,CAAC;;EAEpB,IAAI,kBAAkB,GAAG,SAAS,kBAAkB,CAAC,KAAK,EAAE;IAC1D,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;MACpB,KAAK,GAAG,EAAE,CAAC;KACZ;;IAED,UAAU,CAAC,SAAS,GAAG,oBAAoB,CAAC;MAC1C,YAAY,EAAE,YAAY;MAC1B,YAAY,EAAE,KAAK;MACnB,UAAU,EAAE,UAAU;MACtB,KAAK,EAAE,eAAe;MACtB,eAAe,EAAE,eAAe;MAChC,UAAU,EAAE,UAAU;KACvB,CAAC,CAAC;GACJ,CAAC;;EAEF,kBAAkB,CAAC,YAAY,CAAC,CAAC;;EAEjC,IAAI,yBAAyB,GAAG,SAAS,yBAAyB,GAAG;IACnE,OAAO,UAAU,IAAI,EAAE;MACrB,OAAO,UAAU,MAAM,EAAE;QACvB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;;QAE1B,IAAI,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;UACnI,IAAI,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;UACvE,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,aAAa,EAAE;YACnF,aAAa,CAAC;cACZ,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;cACpD,OAAO,EAAE,MAAM,CAAC,OAAO;cACvB,KAAK,EAAE,MAAM,CAAC,KAAK;cACnB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;WACJ,CAAC,CAAC;SACJ;;QAED,OAAO,MAAM,CAAC;OACf,CAAC;KACH,CAAC;GACH,CAAC;;EAEF,IAAI,qBAAqB,GAAG,SAAS,qBAAqB,GAAG;IAC3D,OAAO,YAAY;MACjB,OAAO,UAAU,MAAM,EAAE;QACvB,IAAI,MAAM,IAAI,IAAI,EAAE;UAClB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5B;;QAED,OAAO,SAAS,CAAC;OAClB,CAAC;KACH,CAAC;GACH,CAAC;;EAEF,IAAI,4BAA4B,GAAG,SAAS,4BAA4B,CAAC,KAAK,EAAE;IAC9E,OAAO,UAAU,IAAI,EAAE;MACrB,OAAO,UAAU,MAAM,EAAE;QACvB,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnE,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;OACrB,CAAC;KACH,CAAC;GACH,CAAC;;EAEF,IAAI,mBAAmB,GAAG,CAAC,4BAA4B,EAAEC,KAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;;EAErH,IAAI,WAAW,EAAE;IACf,mBAAmB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;GACjD;;EAED,IAAI,gBAAgB,GAAG,SAAS,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,oCAAoC,GAAG,MAAM,CAAC,oCAAoC,CAAC;IAC1K,IAAI,EAAE,SAAS;GAChB,CAAC,GAAG,OAAO,CAAC,CAAC;EACd,IAAI,KAAK,GAAGC,WAAa,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EACnM,KAAK,CAAC,SAAS,CAAC,YAAY;IAC1B,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,GAAG,KAAK,CAAC;GACxD,CAAC,CAAC;EACH,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;EACrC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAErC,IAAI,kBAAkB,GAAG,SAAS,kBAAkB,GAAG;IACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,UAAU,EAAE;MACxD,OAAO,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KACnC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;MACtE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;KAChE,CAAC,CAAC;GACJ,CAAC;;EAEF,kBAAkB,EAAE,CAAC;;EAErB,IAAI,WAAW,GAAG,SAAS,WAAW,CAAC,SAAS,EAAE;IAChD,IAAI,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;;IAEpC,IAAI,SAAS,EAAE;MACb,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;KAChC;;IAED,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnD,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3G,kBAAkB,EAAE,CAAC;GACtB,CAAC;;EAEF,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;IAC1B,QAAQ,EAAE,SAAS,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE;MAC5C,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,YAAoB,KAAK,YAAY,EAAE;;QAEjE,OAAO,CAAC,IAAI,CAAC,wEAAwE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;QACpG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;OACxB;;MAED,eAAe,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;MACnC,WAAW,EAAE,CAAC;KACf;IACD,kBAAkB,EAAE,SAAS,kBAAkB,GAAG;MAChD,aAAa,GAAG,EAAE,CAAC;KACpB;IACD,UAAU,EAAE,SAAS,UAAU,GAAG;MAChC,OAAO,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC;KAC5C;IACD,YAAY,EAAE,SAAS,YAAY,GAAG;MACpC,OAAO,UAAU,CAAC,SAAS,CAAC,sBAAsB,CAAC;KACpD;IACD,gBAAgB,EAAE,SAAS,gBAAgB,GAAG;MAC5C,OAAO,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KACjC;IACD,WAAW,EAAE,SAAS,WAAW,CAAC,QAAQ,EAAE;MAC1C,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;MAC7C,WAAW,EAAE,CAAC;KACf;IACD,WAAW,EAAE,SAAS,WAAW,CAAC,GAAG,EAAE;MACrC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;AACjC,AAIA;QACQ,OAAO;OACR;;MAED,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;MAC5B,WAAW,CAAC,GAAG,CAAC,CAAC;KAClB;GACF,CAAC,CAAC;CACJ;AACD,AA4DA;AACA,IAAI,aAAa,GAAG,SAAS,aAAa,CAAC,IAAI,EAAE;EAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ;MACxB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EACvB,OAAOC,cAAK,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE;IAChD,KAAK,EAAE,KAAK;GACb,EAAE,QAAQ,CAAC,CAAC;CACd,CAAC;;;;;;;AAOF,aAAa,CAAC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACh0BrB,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;;AAElC,SAAS,QAAQ,GAAG;EAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAC3D,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;GACX;EACD,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;CACxB;;AAED,SAAS,QAAQ,CAAC,CAAC,EAAE;EACnB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACZ;;AAED,SAAS,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE;EACxC,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IACrD,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;GAC9B,CAAC,CAAC;CACJ;;AAED,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,GAAG;EACxC,WAAW,EAAE,QAAQ;EACrB,EAAE,EAAE,SAAS,QAAQ,EAAE,QAAQ,EAAE;IAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACV,CAAC,GAAG,cAAc,CAAC,QAAQ,GAAG,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,CAAC,GAAG,CAAC,CAAC;QACN,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;;;IAGjB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;MACxB,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,GAAGL,KAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;MAC7F,OAAO;KACR;;;;IAID,IAAI,QAAQ,IAAI,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,QAAQ,CAAC,CAAC;IACzG,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;MACd,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAGC,KAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;WACrE,IAAI,QAAQ,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAGA,KAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC/E;;IAED,OAAO,IAAI,CAAC;GACb;EACD,IAAI,EAAE,WAAW;IACf,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1B,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACxC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;GAC3B;EACD,IAAI,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACzB,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC3E,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;GACtF;EACD,KAAK,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;IAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC3E,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;GAC1F;CACF,CAAC;;AAEF,SAASD,KAAG,CAAC,IAAI,EAAE,IAAI,EAAE;EACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAC9C,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,EAAE;MAC/B,OAAO,CAAC,CAAC,KAAK,CAAC;KAChB;GACF;CACF;;AAED,SAASC,KAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;EACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAC3C,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE;MACzB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAClE,MAAM;KACP;GACF;EACD,IAAI,QAAQ,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;EAC/D,OAAO,IAAI,CAAC;CACb;;ACjFM,IAAI,KAAK,GAAG,8BAA8B,CAAC;;AAElD,iBAAe;EACb,GAAG,EAAE,4BAA4B;EACjC,KAAK,EAAE,KAAK;EACZ,KAAK,EAAE,8BAA8B;EACrC,GAAG,EAAE,sCAAsC;EAC3C,KAAK,EAAE,+BAA+B;CACvC,CAAC;;ACNa,kBAAQ,CAAC,IAAI,EAAE;EAC5B,IAAI,MAAM,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAChF,OAAO,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;CAC5F;;ACHD,SAAS,cAAc,CAAC,IAAI,EAAE;EAC5B,OAAO,WAAW;IAChB,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa;QAC7B,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;IAC5B,OAAO,GAAG,KAAK,KAAK,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,KAAK,KAAK;UACjE,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;UAC5B,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;GAC3C,CAAC;CACH;;AAED,SAAS,YAAY,CAAC,QAAQ,EAAE;EAC9B,OAAO,WAAW;IAChB,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;GAC3E,CAAC;CACH;;AAED,AAAe,gBAAQ,CAAC,IAAI,EAAE;EAC5B,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK;QAChB,YAAY;QACZ,cAAc,EAAE,QAAQ,CAAC,CAAC;CACjC;;ACxBD,SAAS,IAAI,GAAG,EAAE;;AAElB,AAAe,iBAAQ,CAAC,QAAQ,EAAE;EAChC,OAAO,QAAQ,IAAI,IAAI,GAAG,IAAI,GAAG,WAAW;IAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;GACrC,CAAC;CACH;;ACHc,yBAAQ,CAAC,MAAM,EAAE;EAC9B,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;;EAE5D,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAC9F,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACtH,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;QAC/E,IAAI,UAAU,IAAI,IAAI,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzD,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;OACvB;KACF;GACF;;EAED,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CAChD;;AChBD,SAAS,KAAK,GAAG;EACf,OAAO,EAAE,CAAC;CACX;;AAED,AAAe,oBAAQ,CAAC,QAAQ,EAAE;EAChC,OAAO,QAAQ,IAAI,IAAI,GAAG,KAAK,GAAG,WAAW;IAC3C,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;GACxC,CAAC;CACH;;ACLc,4BAAQ,CAAC,MAAM,EAAE;EAC9B,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;;EAE/D,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAClG,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACrE,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;QACnB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OACpB;KACF;GACF;;EAED,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;CAC1C;;AChBc,gBAAQ,CAAC,QAAQ,EAAE;EAChC,OAAO,WAAW;IAChB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;GAC/B,CAAC;CACH;;ACDc,yBAAQ,CAAC,KAAK,EAAE;EAC7B,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;EAExD,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAC9F,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACnG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE;QAClE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OACrB;KACF;GACF;;EAED,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CAChD;;ACfc,eAAQ,CAAC,MAAM,EAAE;EAC9B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CACjC;;ACCc,wBAAQ,GAAG;EACxB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC9E;;AAED,AAAO,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;EACvC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;EAC1C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;EACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;CACvB;;AAED,SAAS,CAAC,SAAS,GAAG;EACpB,WAAW,EAAE,SAAS;EACtB,WAAW,EAAE,SAAS,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;EACrF,YAAY,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE;EACtF,aAAa,EAAE,SAAS,QAAQ,EAAE,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE;EAClF,gBAAgB,EAAE,SAAS,QAAQ,EAAE,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE;CACzF,CAAC;;ACrBa,iBAAQ,CAAC,CAAC,EAAE;EACzB,OAAO,WAAW;IAChB,OAAO,CAAC,CAAC;GACV,CAAC;CACH;;ACAD,IAAI,SAAS,GAAG,GAAG,CAAC;;AAEpB,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;EAC3D,IAAI,CAAC,GAAG,CAAC;MACL,IAAI;MACJ,WAAW,GAAG,KAAK,CAAC,MAAM;MAC1B,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;;;;;EAK7B,OAAO,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;IAC1B,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;MACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;MACxB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KAClB,MAAM;MACL,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;GACF;;;EAGD,OAAO,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;IAC3B,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;MACnB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KAChB;GACF;CACF;;AAED,SAAS,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;EAC9D,IAAI,CAAC;MACD,IAAI;MACJ,cAAc,GAAG,EAAE;MACnB,WAAW,GAAG,KAAK,CAAC,MAAM;MAC1B,UAAU,GAAG,IAAI,CAAC,MAAM;MACxB,SAAS,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC;MAClC,QAAQ,CAAC;;;;EAIb,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;IAChC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;MACnB,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;MAC9E,IAAI,QAAQ,IAAI,cAAc,EAAE;QAC9B,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;OAChB,MAAM;QACL,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;OACjC;KACF;GACF;;;;;EAKD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;IAC/B,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,EAAE;MACnC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;MACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;MACxB,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;KACjC,MAAM;MACL,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;GACF;;;EAGD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;IAChC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;MAChE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KAChB;GACF;CACF;;AAED,AAAe,uBAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;EAClC,IAAI,CAAC,KAAK,EAAE;IACV,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC;GACb;;EAED,IAAI,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,SAAS;MAChC,OAAO,GAAG,IAAI,CAAC,QAAQ;MACvB,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;;EAE1B,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;;EAEzD,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAC/G,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;QACnB,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;QACjB,WAAW,GAAG,KAAK,CAAC,MAAM;QAC1B,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC;QAChE,UAAU,GAAG,IAAI,CAAC,MAAM;QACxB,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC;QAC7C,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC;QAC/C,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;;IAEjD,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;;;;;IAKnE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;MAC9D,IAAI,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;QAC7B,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1B,OAAO,EAAE,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC;QACvD,QAAQ,CAAC,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC;OAC/B;KACF;GACF;;EAED,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EACxC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;EACtB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;EACpB,OAAO,MAAM,CAAC;CACf;;AClHc,uBAAQ,GAAG;EACxB,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC7E;;ACLc,uBAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;EACjD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;EAC5D,KAAK,GAAG,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;EACpF,IAAI,QAAQ,IAAI,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;EAChD,IAAI,MAAM,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;EACrD,OAAO,KAAK,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC;CAC/D;;ACJc,wBAAQ,CAAC,SAAS,EAAE;;EAEjC,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IACvK,KAAK,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MAC/H,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;QACjC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;OACjB;KACF;GACF;;EAED,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;IAClB,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;GACxB;;EAED,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC7C;;ACjBc,wBAAQ,GAAG;;EAExB,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG;IACnE,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG;MAClF,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;QACnB,IAAI,IAAI,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7F,IAAI,GAAG,IAAI,CAAC;OACb;KACF;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;ACVc,uBAAQ,CAAC,OAAO,EAAE;EAC/B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;;EAElC,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE;IACzB,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;GAC3D;;EAED,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAC/F,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MAC/G,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;QACnB,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;OACrB;KACF;IACD,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;GAC7B;;EAED,OAAO,IAAI,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;CACzD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;EACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;CAClD;;ACvBc,uBAAQ,GAAG;EACxB,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EAC5B,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EACpB,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;EAChC,OAAO,IAAI,CAAC;CACb;;ACLc,wBAAQ,GAAG;EACxB,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7C,OAAO,KAAK,CAAC;CACd;;ACJc,uBAAQ,GAAG;;EAExB,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IACpE,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MAC/D,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;MACpB,IAAI,IAAI,EAAE,OAAO,IAAI,CAAC;KACvB;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;ACVc,uBAAQ,GAAG;EACxB,IAAI,IAAI,GAAG,CAAC,CAAC;EACb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;EAClC,OAAO,IAAI,CAAC;CACb;;ACJc,wBAAQ,GAAG;EACxB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;CACrB;;ACFc,uBAAQ,CAAC,QAAQ,EAAE;;EAEhC,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IACpE,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACrE,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACnE;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;ACPD,SAAS,UAAU,CAAC,IAAI,EAAE;EACxB,OAAO,WAAW;IAChB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;GAC5B,CAAC;CACH;;AAED,SAAS,YAAY,CAAC,QAAQ,EAAE;EAC9B,OAAO,WAAW;IAChB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;GACxD,CAAC;CACH;;AAED,SAAS,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;EACjC,OAAO,WAAW;IAChB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;GAChC,CAAC;CACH;;AAED,SAAS,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE;EACvC,OAAO,WAAW;IAChB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;GAC5D,CAAC;CACH;;AAED,SAAS,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;EACjC,OAAO,WAAW;IAChB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SACrC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;GACjC,CAAC;CACH;;AAED,SAAS,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE;EACvC,OAAO,WAAW;IAChB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;SACjE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GAC7D,CAAC;CACH;;AAED,AAAe,uBAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EACnC,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;;EAE/B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;IACxB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACvB,OAAO,QAAQ,CAAC,KAAK;UACf,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;UACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;GACnC;;EAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI;SACxB,QAAQ,CAAC,KAAK,GAAG,YAAY,GAAG,UAAU,KAAK,OAAO,KAAK,KAAK,UAAU;SAC1E,QAAQ,CAAC,KAAK,GAAG,cAAc,GAAG,YAAY;SAC9C,QAAQ,CAAC,KAAK,GAAG,cAAc,GAAG,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;CAC5E;;ACxDc,oBAAQ,CAAC,IAAI,EAAE;EAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW;UACpD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;SACvB,IAAI,CAAC,WAAW,CAAC;CACzB;;ACFD,SAAS,WAAW,CAAC,IAAI,EAAE;EACzB,OAAO,WAAW;IAChB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;GACjC,CAAC;CACH;;AAED,SAAS,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;EAC5C,OAAO,WAAW;IAChB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;GAC/C,CAAC;CACH;;AAED,SAAS,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;EAC5C,OAAO,WAAW;IAChB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SAC1C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;GAChD,CAAC;CACH;;AAED,AAAe,wBAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;EAC7C,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI;cAClB,WAAW,GAAG,OAAO,KAAK,KAAK,UAAU;cACzC,aAAa;cACb,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QACpE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;CACrC;;AAED,AAAO,SAAS,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE;EACrC,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;SACjC,WAAW,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAC9E;;AClCD,SAAS,cAAc,CAAC,IAAI,EAAE;EAC5B,OAAO,WAAW;IAChB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;GACnB,CAAC;CACH;;AAED,SAAS,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE;EACrC,OAAO,WAAW;IAChB,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;GACpB,CAAC;CACH;;AAED,SAAS,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE;EACrC,OAAO,WAAW;IAChB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;SAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;GACrB,CAAC;CACH;;AAED,AAAe,2BAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EACnC,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI;YACpB,cAAc,GAAG,OAAO,KAAK,KAAK,UAAU;YAC5C,gBAAgB;YAChB,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;CACzB;;AC3BD,SAAS,UAAU,CAAC,MAAM,EAAE;EAC1B,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CACrC;;AAED,SAAS,SAAS,CAAC,IAAI,EAAE;EACvB,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;CAC9C;;AAED,SAAS,SAAS,CAAC,IAAI,EAAE;EACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAClB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;CAC5D;;AAED,SAAS,CAAC,SAAS,GAAG;EACpB,GAAG,EAAE,SAAS,IAAI,EAAE;IAClB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,CAAC,EAAE;MACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MACvB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KACzD;GACF;EACD,MAAM,EAAE,SAAS,IAAI,EAAE;IACrB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,EAAE;MACV,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MACzB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KACzD;GACF;EACD,QAAQ,EAAE,SAAS,IAAI,EAAE;IACvB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACvC;CACF,CAAC;;AAEF,SAAS,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;EAC/B,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;EACrD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CACpC;;AAED,SAAS,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE;EAClC,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;EACrD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CACvC;;AAED,SAAS,WAAW,CAAC,KAAK,EAAE;EAC1B,OAAO,WAAW;IAChB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;GACzB,CAAC;CACH;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,OAAO,WAAW;IAChB,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;GAC5B,CAAC;CACH;;AAED,SAAS,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE;EACrC,OAAO,WAAW;IAChB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,GAAG,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;GAC1E,CAAC;CACH;;AAED,AAAe,0BAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EACnC,IAAI,KAAK,GAAG,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;;EAElC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;IACxB,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC;IAC3D,OAAO,IAAI,CAAC;GACb;;EAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,UAAU;QACvC,eAAe,GAAG,KAAK;QACvB,WAAW;QACX,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CACpC;;AC1ED,SAAS,UAAU,GAAG;EACpB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;CACvB;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,OAAO,WAAW;IAChB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;GAC1B,CAAC;CACH;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,OAAO,WAAW;IAChB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;GACvC,CAAC;CACH;;AAED,AAAe,uBAAQ,CAAC,KAAK,EAAE;EAC7B,OAAO,SAAS,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI;YACnB,UAAU,GAAG,CAAC,OAAO,KAAK,KAAK,UAAU;YACzC,YAAY;YACZ,YAAY,EAAE,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC;CAC/B;;ACxBD,SAAS,UAAU,GAAG;EACpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;CACrB;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,OAAO,WAAW;IAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;GACxB,CAAC;CACH;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,OAAO,WAAW;IAChB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;GACrC,CAAC;CACH;;AAED,AAAe,uBAAQ,CAAC,KAAK,EAAE;EAC7B,OAAO,SAAS,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI;YACnB,UAAU,GAAG,CAAC,OAAO,KAAK,KAAK,UAAU;YACzC,YAAY;YACZ,YAAY,EAAE,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC;CAC7B;;ACxBD,SAAS,KAAK,GAAG;EACf,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CACzD;;AAED,AAAe,wBAAQ,GAAG;EACxB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACzB;;ACND,SAAS,KAAK,GAAG;EACf,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;CAC1F;;AAED,AAAe,wBAAQ,GAAG;EACxB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACzB;;ACJc,yBAAQ,CAAC,IAAI,EAAE;EAC5B,IAAI,MAAM,GAAG,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;EAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW;IAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;GACxD,CAAC,CAAC;CACJ;;ACJD,SAAS,YAAY,GAAG;EACtB,OAAO,IAAI,CAAC;CACb;;AAED,AAAe,yBAAQ,CAAC,IAAI,EAAE,MAAM,EAAE;EACpC,IAAI,MAAM,GAAG,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;MAC1D,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,YAAY,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;EACtG,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW;IAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC;GAChG,CAAC,CAAC;CACJ;;ACbD,SAAS,MAAM,GAAG;EAChB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;EAC7B,IAAI,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CACtC;;AAED,AAAe,yBAAQ,GAAG;EACxB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC1B;;ACPD,SAAS,sBAAsB,GAAG;EAChC,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;CAC9E;;AAED,SAAS,mBAAmB,GAAG;EAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;CAC7E;;AAED,AAAe,wBAAQ,CAAC,IAAI,EAAE;EAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,mBAAmB,GAAG,sBAAsB,CAAC,CAAC;CACzE;;ACVc,wBAAQ,CAAC,KAAK,EAAE;EAC7B,OAAO,SAAS,CAAC,MAAM;QACjB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC;CAC5B;;ACJD,IAAI,YAAY,GAAG,EAAE,CAAC;;AAEtB,AAAO,IAAI,KAAK,GAAG,IAAI,CAAC;;AAExB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;EACnC,IAAI,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC;EACvC,IAAI,EAAE,cAAc,IAAI,OAAO,CAAC,EAAE;IAChC,YAAY,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;GAClE;CACF;;AAED,SAAS,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;EACrD,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;EACnD,OAAO,SAAS,KAAK,EAAE;IACrB,IAAI,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC;IAClC,IAAI,CAAC,OAAO,KAAK,OAAO,KAAK,IAAI,IAAI,EAAE,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;MAClF,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC5B;GACF,CAAC;CACH;;AAED,SAAS,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;EAC/C,OAAO,SAAS,MAAM,EAAE;IACtB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,GAAG,MAAM,CAAC;IACf,IAAI;MACF,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KAClD,SAAS;MACR,KAAK,GAAG,MAAM,CAAC;KAChB;GACF,CAAC;CACH;;AAED,SAASK,gBAAc,CAAC,SAAS,EAAE;EACjC,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IACrD,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;GAC9B,CAAC,CAAC;CACJ;;AAED,SAAS,QAAQ,CAAC,QAAQ,EAAE;EAC1B,OAAO,WAAW;IAChB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,EAAE,OAAO;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACpD,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;QACvF,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;OACzD,MAAM;QACL,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;OACb;KACF;IACD,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SAClB,OAAO,IAAI,CAAC,IAAI,CAAC;GACvB,CAAC;CACH;;AAED,SAAS,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;EACvC,IAAI,IAAI,GAAG,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,qBAAqB,GAAG,eAAe,CAAC;EAChG,OAAO,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;IAC3B,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACxD,IAAI,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACjD,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;QAClE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QAChB,OAAO;OACR;KACF;IACD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;SACpB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;GACjB,CAAC;CACH;;AAED,AAAe,qBAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;EAChD,IAAI,SAAS,GAAGA,gBAAc,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;;EAE1E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;IACxB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;IAC1B,IAAI,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACpD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;QACjC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;UAC3D,OAAO,CAAC,CAAC,KAAK,CAAC;SAChB;OACF;KACF;IACD,OAAO;GACR;;EAED,EAAE,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;EAC9B,IAAI,OAAO,IAAI,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;EACrC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;EACpE,OAAO,IAAI,CAAC;CACb;;AAED,AAAO,SAAS,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;EACxD,IAAI,MAAM,GAAG,KAAK,CAAC;EACnB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;EAC3B,KAAK,GAAG,MAAM,CAAC;EACf,IAAI;IACF,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;GACnC,SAAS;IACR,KAAK,GAAG,MAAM,CAAC;GAChB;CACF;;ACxGD,SAAS,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;EACzC,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;MAC1B,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;;EAE/B,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;IAC/B,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;GACjC,MAAM;IACL,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;SAC9F,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;GAC1C;;EAED,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;CAC3B;;AAED,SAAS,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE;EACtC,OAAO,WAAW;IAChB,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;GAC1C,CAAC;CACH;;AAED,SAAS,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE;EACtC,OAAO,WAAW;IAChB,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;GACjE,CAAC;CACH;;AAED,AAAe,2BAAQ,CAAC,IAAI,EAAE,MAAM,EAAE;EACpC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,KAAK,UAAU;QACxC,gBAAgB;QAChB,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;CACxC;;ACDM,IAAIC,MAAI,GAAG,CAAC,IAAI,CAAC,CAAC;;AAEzB,AAAO,SAAS,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE;EACzC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;CACzB;;AAED,SAAS,SAAS,GAAG;EACnB,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAEA,MAAI,CAAC,CAAC;CAC1D;;AAED,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,GAAG;EAC1C,WAAW,EAAE,SAAS;EACtB,MAAM,EAAE,gBAAgB;EACxB,SAAS,EAAE,mBAAmB;EAC9B,MAAM,EAAE,gBAAgB;EACxB,IAAI,EAAE,cAAc;EACpB,KAAK,EAAE,eAAe;EACtB,IAAI,EAAE,cAAc;EACpB,IAAI,EAAE,cAAc;EACpB,KAAK,EAAE,eAAe;EACtB,KAAK,EAAE,eAAe;EACtB,IAAI,EAAE,cAAc;EACpB,IAAI,EAAE,cAAc;EACpB,KAAK,EAAE,eAAe;EACtB,IAAI,EAAE,cAAc;EACpB,IAAI,EAAE,cAAc;EACpB,KAAK,EAAE,eAAe;EACtB,IAAI,EAAE,cAAc;EACpB,IAAI,EAAE,cAAc;EACpB,KAAK,EAAE,eAAe;EACtB,QAAQ,EAAE,kBAAkB;EAC5B,OAAO,EAAE,iBAAiB;EAC1B,IAAI,EAAE,cAAc;EACpB,IAAI,EAAE,cAAc;EACpB,KAAK,EAAE,eAAe;EACtB,KAAK,EAAE,eAAe;EACtB,MAAM,EAAE,gBAAgB;EACxB,MAAM,EAAE,gBAAgB;EACxB,MAAM,EAAE,gBAAgB;EACxB,KAAK,EAAE,eAAe;EACtB,KAAK,EAAE,eAAe;EACtB,EAAE,EAAE,YAAY;EAChB,QAAQ,EAAE,kBAAkB;CAC7B,CAAC;;AC1Ea,eAAQ,CAAC,QAAQ,EAAE;EAChC,OAAO,OAAO,QAAQ,KAAK,QAAQ;QAC7B,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC/E,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAEA,MAAI,CAAC,CAAC;CACzC;;ACJc,oBAAQ,GAAG;EACxB,IAAI,OAAO,GAAG,KAAK,EAAE,MAAM,CAAC;EAC5B,OAAO,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAAC;EACtD,OAAO,OAAO,CAAC;CAChB;;ACNc,cAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EACnC,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;;EAEvC,IAAI,GAAG,CAAC,cAAc,EAAE;IACtB,IAAI,KAAK,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;IACjC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;IACjD,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;GAC3B;;EAED,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;EACxC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;CACjG;;ACTc,cAAQ,CAAC,IAAI,EAAE;EAC5B,IAAI,KAAK,GAAG,WAAW,EAAE,CAAC;EAC1B,IAAI,KAAK,CAAC,cAAc,EAAE,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;EAC1D,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CAC3B;;ACJc,cAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;EACjD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,GAAG,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,CAAC,cAAc,CAAC;;EAEvF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IACnE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,KAAK,UAAU,EAAE;MAClD,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC3B;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;ACPc,gBAAQ,GAAG;EACxB,KAAK,CAAC,cAAc,EAAE,CAAC;EACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;CAClC;;ACNc,oBAAQ,CAAC,IAAI,EAAE;EAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;MACpC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;EACjE,IAAI,eAAe,IAAI,IAAI,EAAE;IAC3B,SAAS,CAAC,EAAE,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;GACjD,MAAM;IACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;GACnC;CACF;;AAED,AAAO,SAAS,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE;EACrC,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;MACpC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;EACxD,IAAI,OAAO,EAAE;IACX,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;GACjE;EACD,IAAI,eAAe,IAAI,IAAI,EAAE;IAC3B,SAAS,CAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;GACxC,MAAM;IACL,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;IAC3C,OAAO,IAAI,CAAC,UAAU,CAAC;GACxB;CACF;;AC3Bc,eAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE;EACvD,WAAW,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;EACtD,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;CACrC;;AAED,AAAO,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE;EACzC,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;EAChD,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;EAC7D,OAAO,SAAS,CAAC;CAClB;;ACPM,SAAS,KAAK,GAAG,EAAE;;AAE1B,AAAO,IAAI,MAAM,GAAG,GAAG,CAAC;AACxB,AAAO,IAAI,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC;;AAEjC,IAAI,GAAG,GAAG,qBAAqB;IAC3B,GAAG,GAAG,+CAA+C;IACrD,GAAG,GAAG,gDAAgD;IACtD,KAAK,GAAG,oBAAoB;IAC5B,YAAY,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IAC/D,YAAY,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IAC/D,aAAa,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IACtE,aAAa,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IACtE,YAAY,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IAC/D,aAAa,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;;AAE3E,IAAI,KAAK,GAAG;EACV,SAAS,EAAE,QAAQ;EACnB,YAAY,EAAE,QAAQ;EACtB,IAAI,EAAE,QAAQ;EACd,UAAU,EAAE,QAAQ;EACpB,KAAK,EAAE,QAAQ;EACf,KAAK,EAAE,QAAQ;EACf,MAAM,EAAE,QAAQ;EAChB,KAAK,EAAE,QAAQ;EACf,cAAc,EAAE,QAAQ;EACxB,IAAI,EAAE,QAAQ;EACd,UAAU,EAAE,QAAQ;EACpB,KAAK,EAAE,QAAQ;EACf,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;EACnB,UAAU,EAAE,QAAQ;EACpB,SAAS,EAAE,QAAQ;EACnB,KAAK,EAAE,QAAQ;EACf,cAAc,EAAE,QAAQ;EACxB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,QAAQ;EACjB,IAAI,EAAE,QAAQ;EACd,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,QAAQ;EAClB,aAAa,EAAE,QAAQ;EACvB,QAAQ,EAAE,QAAQ;EAClB,SAAS,EAAE,QAAQ;EACnB,QAAQ,EAAE,QAAQ;EAClB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,QAAQ;EACrB,cAAc,EAAE,QAAQ;EACxB,UAAU,EAAE,QAAQ;EACpB,UAAU,EAAE,QAAQ;EACpB,OAAO,EAAE,QAAQ;EACjB,UAAU,EAAE,QAAQ;EACpB,YAAY,EAAE,QAAQ;EACtB,aAAa,EAAE,QAAQ;EACvB,aAAa,EAAE,QAAQ;EACvB,aAAa,EAAE,QAAQ;EACvB,aAAa,EAAE,QAAQ;EACvB,UAAU,EAAE,QAAQ;EACpB,QAAQ,EAAE,QAAQ;EAClB,WAAW,EAAE,QAAQ;EACrB,OAAO,EAAE,QAAQ;EACjB,OAAO,EAAE,QAAQ;EACjB,UAAU,EAAE,QAAQ;EACpB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,QAAQ;EACrB,WAAW,EAAE,QAAQ;EACrB,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,QAAQ;EACnB,UAAU,EAAE,QAAQ;EACpB,IAAI,EAAE,QAAQ;EACd,SAAS,EAAE,QAAQ;EACnB,IAAI,EAAE,QAAQ;EACd,KAAK,EAAE,QAAQ;EACf,WAAW,EAAE,QAAQ;EACrB,IAAI,EAAE,QAAQ;EACd,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,QAAQ;EACnB,MAAM,EAAE,QAAQ;EAChB,KAAK,EAAE,QAAQ;EACf,KAAK,EAAE,QAAQ;EACf,QAAQ,EAAE,QAAQ;EAClB,aAAa,EAAE,QAAQ;EACvB,SAAS,EAAE,QAAQ;EACnB,YAAY,EAAE,QAAQ;EACtB,SAAS,EAAE,QAAQ;EACnB,UAAU,EAAE,QAAQ;EACpB,SAAS,EAAE,QAAQ;EACnB,oBAAoB,EAAE,QAAQ;EAC9B,SAAS,EAAE,QAAQ;EACnB,UAAU,EAAE,QAAQ;EACpB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,QAAQ;EACrB,aAAa,EAAE,QAAQ;EACvB,YAAY,EAAE,QAAQ;EACtB,cAAc,EAAE,QAAQ;EACxB,cAAc,EAAE,QAAQ;EACxB,cAAc,EAAE,QAAQ;EACxB,WAAW,EAAE,QAAQ;EACrB,IAAI,EAAE,QAAQ;EACd,SAAS,EAAE,QAAQ;EACnB,KAAK,EAAE,QAAQ;EACf,OAAO,EAAE,QAAQ;EACjB,MAAM,EAAE,QAAQ;EAChB,gBAAgB,EAAE,QAAQ;EAC1B,UAAU,EAAE,QAAQ;EACpB,YAAY,EAAE,QAAQ;EACtB,YAAY,EAAE,QAAQ;EACtB,cAAc,EAAE,QAAQ;EACxB,eAAe,EAAE,QAAQ;EACzB,iBAAiB,EAAE,QAAQ;EAC3B,eAAe,EAAE,QAAQ;EACzB,eAAe,EAAE,QAAQ;EACzB,YAAY,EAAE,QAAQ;EACtB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;EACnB,QAAQ,EAAE,QAAQ;EAClB,WAAW,EAAE,QAAQ;EACrB,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,QAAQ;EACjB,KAAK,EAAE,QAAQ;EACf,SAAS,EAAE,QAAQ;EACnB,MAAM,EAAE,QAAQ;EAChB,SAAS,EAAE,QAAQ;EACnB,MAAM,EAAE,QAAQ;EAChB,aAAa,EAAE,QAAQ;EACvB,SAAS,EAAE,QAAQ;EACnB,aAAa,EAAE,QAAQ;EACvB,aAAa,EAAE,QAAQ;EACvB,UAAU,EAAE,QAAQ;EACpB,SAAS,EAAE,QAAQ;EACnB,IAAI,EAAE,QAAQ;EACd,IAAI,EAAE,QAAQ;EACd,IAAI,EAAE,QAAQ;EACd,UAAU,EAAE,QAAQ;EACpB,MAAM,EAAE,QAAQ;EAChB,aAAa,EAAE,QAAQ;EACvB,GAAG,EAAE,QAAQ;EACb,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;EACnB,WAAW,EAAE,QAAQ;EACrB,MAAM,EAAE,QAAQ;EAChB,UAAU,EAAE,QAAQ;EACpB,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,QAAQ;EAChB,MAAM,EAAE,QAAQ;EAChB,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,QAAQ;EACnB,IAAI,EAAE,QAAQ;EACd,WAAW,EAAE,QAAQ;EACrB,SAAS,EAAE,QAAQ;EACnB,GAAG,EAAE,QAAQ;EACb,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,QAAQ;EACjB,MAAM,EAAE,QAAQ;EAChB,SAAS,EAAE,QAAQ;EACnB,MAAM,EAAE,QAAQ;EAChB,KAAK,EAAE,QAAQ;EACf,KAAK,EAAE,QAAQ;EACf,UAAU,EAAE,QAAQ;EACpB,MAAM,EAAE,QAAQ;EAChB,WAAW,EAAE,QAAQ;CACtB,CAAC;;AAEF,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE;EACnB,IAAI,EAAE,SAAS,QAAQ,EAAE;IACvB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;GAC5D;EACD,WAAW,EAAE,WAAW;IACtB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;GACjC;EACD,GAAG,EAAE,eAAe;EACpB,SAAS,EAAE,eAAe;EAC1B,SAAS,EAAE,eAAe;EAC1B,SAAS,EAAE,eAAe;EAC1B,QAAQ,EAAE,eAAe;CAC1B,CAAC,CAAC;;AAEH,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;CAC/B;;AAED,SAAS,eAAe,GAAG;EACzB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;CACrC;;AAED,SAAS,eAAe,GAAG;EACzB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;CAC/B;;AAED,AAAe,SAAS,KAAK,CAAC,MAAM,EAAE;EACpC,IAAI,CAAC,EAAE,CAAC,CAAC;EACT,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;EAC5C,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACvF,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACjH,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;QACnF,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC;QAC1J,IAAI;QACJ,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;QAClG,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,KAAK,aAAa,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC;CACZ;;AAED,SAAS,IAAI,CAAC,CAAC,EAAE;EACf,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;CAC5D;;AAED,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACxB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EAC5B,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5B;;AAED,AAAO,SAAS,UAAU,CAAC,CAAC,EAAE;EAC5B,IAAI,EAAE,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACxC,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC;EACvB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EACZ,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;CAC1C;;AAED,AAAO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;EACpC,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;CACjG;;AAED,AAAO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;EACpC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACZ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACZ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACZ,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC;CACzB;;AAED,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE;EAC7B,QAAQ,EAAE,SAAS,CAAC,EAAE;IACpB,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;GAClE;EACD,MAAM,EAAE,SAAS,CAAC,EAAE;IAClB,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7C,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;GAClE;EACD,GAAG,EAAE,WAAW;IACd,OAAO,IAAI,CAAC;GACb;EACD,WAAW,EAAE,WAAW;IACtB,OAAO,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK;YAChC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;YACjC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;YACjC,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;GACjD;EACD,GAAG,EAAE,aAAa;EAClB,SAAS,EAAE,aAAa;EACxB,SAAS,EAAE,aAAa;EACxB,QAAQ,EAAE,aAAa;CACxB,CAAC,CAAC,CAAC;;AAEJ,SAAS,aAAa,GAAG;EACvB,OAAO,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACtD;;AAED,SAAS,aAAa,GAAG;EACvB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACrE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,OAAO;QAC5B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;QAC1D,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;QAC1D,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SAClD,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;CACxC;;AAED,SAAS,GAAG,CAAC,KAAK,EAAE;EAClB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3D,OAAO,CAAC,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;CACrD;;AAED,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACxB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;OACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;OAClC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EACzB,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5B;;AAED,AAAO,SAAS,UAAU,CAAC,CAAC,EAAE;EAC5B,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;EAC/D,IAAI,EAAE,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACxC,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC;EACvB,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,CAAC,CAAC;EAC/B,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EACZ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;MACb,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;MACb,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;MACb,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MACvB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MACvB,CAAC,GAAG,GAAG;MACP,CAAC,GAAG,GAAG,GAAG,GAAG;MACb,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;EACxB,IAAI,CAAC,EAAE;IACL,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACxC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACnC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IACzC,CAAC,IAAI,EAAE,CAAC;GACT,MAAM;IACL,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GAC5B;EACD,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;CACpC;;AAED,AAAO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;EACpC,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;CACjG;;AAED,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE;EAC7B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACZ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACZ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACZ,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC;CACzB;;AAED,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE;EAC7B,QAAQ,EAAE,SAAS,CAAC,EAAE;IACpB,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;GAC1D;EACD,MAAM,EAAE,SAAS,CAAC,EAAE;IAClB,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7C,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;GAC1D;EACD,GAAG,EAAE,WAAW;IACd,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG;QACrC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1C,CAAC,GAAG,IAAI,CAAC,CAAC;QACV,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QAClC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACpB,OAAO,IAAI,GAAG;MACZ,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;MAC7C,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;MAClB,OAAO,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;MAC5C,IAAI,CAAC,OAAO;KACb,CAAC;GACH;EACD,WAAW,EAAE,WAAW;IACtB,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;GACjD;EACD,SAAS,EAAE,WAAW;IACpB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,OAAO;WAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;UACpB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK;UAC3B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG;WACxB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;GACxC;CACF,CAAC,CAAC,CAAC;;;AAGJ,SAAS,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;EAC1B,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;QAClC,CAAC,GAAG,GAAG,GAAG,EAAE;QACZ,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE;QACzC,EAAE,IAAI,GAAG,CAAC;CACjB;;AClXc,mBAAQ,CAAC,CAAC,EAAE;EACzB,OAAO,WAAW;IAChB,OAAO,CAAC,CAAC;GACV,CAAC;CACH;;ACFD,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;EACpB,OAAO,SAAS,CAAC,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GAClB,CAAC;CACH;;AAED,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAC5B,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE;IACxE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;GAC/B,CAAC;CACH;AACD,AAKA;AACA,AAAO,SAAS,KAAK,CAAC,CAAC,EAAE;EACvB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAGC,UAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;GAClE,CAAC;CACH;;AAED,AAAe,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;EACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACd,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGA,UAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACtD;;ACvBD,qBAAe,CAAC,SAAS,QAAQ,CAAC,CAAC,EAAE;EACnC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;EAErB,SAASC,KAAG,CAAC,KAAK,EAAE,GAAG,EAAE;IACvB,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,GAAGC,GAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAGA,GAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACzB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACzB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,SAAS,CAAC,EAAE;MACjB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACf,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACf,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACf,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;MAC3B,OAAO,KAAK,GAAG,EAAE,CAAC;KACnB,CAAC;GACH;;EAEDD,KAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;;EAErB,OAAOA,KAAG,CAAC;CACZ,EAAE,CAAC,CAAC,CAAC;;ACzBS,0BAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;EAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE;IACjC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GAClB,CAAC;CACH;;ACFD,IAAI,GAAG,GAAG,6CAA6C;IACnD,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;AAEtC,SAAS,IAAI,CAAC,CAAC,EAAE;EACf,OAAO,WAAW;IAChB,OAAO,CAAC,CAAC;GACV,CAAC;CACH;;AAED,SAAS,GAAG,CAAC,CAAC,EAAE;EACd,OAAO,SAAS,CAAC,EAAE;IACjB,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;GAClB,CAAC;CACH;;AAED,AAAe,0BAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;EAC5B,IAAI,EAAE,GAAG,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,GAAG,CAAC;MACtC,EAAE;MACF,EAAE;MACF,EAAE;MACF,CAAC,GAAG,CAAC,CAAC;MACN,CAAC,GAAG,EAAE;MACN,CAAC,GAAG,EAAE,CAAC;;;EAGX,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;;;EAGvB,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;UAChB,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;IACzB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE;MACxB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;MACrB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;WAChB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;KAClB;IACD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;MACjC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;WAChB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;KAClB,MAAM;MACL,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;MACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEE,iBAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KACnC;IACD,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC;GACpB;;;EAGD,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;IACjB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAChB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;GAClB;;;;EAID,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,CAAC;SACN,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;UACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACxD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACnB,CAAC,CAAC;CACV;;AC/DD,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;;AAE5B,AAAO,IAAI,QAAQ,GAAG;EACpB,UAAU,EAAE,CAAC;EACb,UAAU,EAAE,CAAC;EACb,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,CAAC;CACV,CAAC;;AAEF,AAAe,kBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACxC,IAAI,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;EAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,IAAI,MAAM,CAAC;EAChE,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;EAC1D,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC;EACjF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC;EACpE,OAAO;IACL,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO;IAClC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO;IACjC,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;GACf,CAAC;CACH;;ACvBD,IAAI,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO,CAAC;;AAEZ,AAAO,SAAS,QAAQ,CAAC,KAAK,EAAE;EAC9B,IAAI,KAAK,KAAK,MAAM,EAAE,OAAO,QAAQ,CAAC;EACtC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC;EAC1H,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;EAChC,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;EACnG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;EAC7B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACtC,OAAO,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CACpF;;AAED,AAAO,SAAS,QAAQ,CAAC,KAAK,EAAE;EAC9B,IAAI,KAAK,IAAI,IAAI,EAAE,OAAO,QAAQ,CAAC;EACnC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;EACpF,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;EACzC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,QAAQ,CAAC;EACxE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;EACrB,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACxE;;ACrBD,SAAS,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;;EAE/D,SAAS,GAAG,CAAC,CAAC,EAAE;IACd,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;GACtC;;EAED,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;IACvC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;MAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;MAC3D,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAEA,iBAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAEA,iBAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KACtE,MAAM,IAAI,EAAE,IAAI,EAAE,EAAE;MACnB,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;KACpD;GACF;;EAED,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC1B,IAAI,CAAC,KAAK,CAAC,EAAE;MACX,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC;MAC1D,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAEA,iBAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9E,MAAM,IAAI,CAAC,EAAE;MACZ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;KAC3C;GACF;;EAED,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACzB,IAAI,CAAC,KAAK,CAAC,EAAE;MACX,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAEA,iBAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7E,MAAM,IAAI,CAAC,EAAE;MACZ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;KAC1C;GACF;;EAED,SAAS,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;IACnC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;MAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;MACxD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAEA,iBAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAEA,iBAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KACtE,MAAM,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;MAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;KACjD;GACF;;EAED,OAAO,SAAS,CAAC,EAAE,CAAC,EAAE;IACpB,IAAI,CAAC,GAAG,EAAE;QACN,CAAC,GAAG,EAAE,CAAC;IACX,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACb,OAAO,SAAS,CAAC,EAAE;MACjB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;MAC5B,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACzC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACnB,CAAC;GACH,CAAC;CACH;;AAED,AAAO,IAAI,uBAAuB,GAAG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3F,AAAO,IAAI,uBAAuB,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;;AC9DpF,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK;IAChB,IAAI,GAAG,CAAC;IACR,IAAI,GAAG,CAAC;IACR,QAAQ,GAAG,KAAK,CAAC;;AAErB,SAAS,IAAI,CAAC,CAAC,EAAE;EACf,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC;;AAED,SAAS,IAAI,CAAC,CAAC,EAAE;EACf,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC;;AAED,SAAS,IAAI,CAAC,CAAC,EAAE;EACf,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9C;;;;AAID,AAAe,wBAAQ,CAAC,EAAE,EAAE,EAAE,EAAE;EAC9B,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;MACpC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;MACpC,EAAE,GAAG,GAAG,GAAG,GAAG;MACd,EAAE,GAAG,GAAG,GAAG,GAAG;MACd,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;MACtB,CAAC;MACD,CAAC,CAAC;;;EAGN,IAAI,EAAE,GAAG,QAAQ,EAAE;IACjB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IAC5B,CAAC,GAAG,SAAS,CAAC,EAAE;MACd,OAAO;QACL,GAAG,GAAG,CAAC,GAAG,EAAE;QACZ,GAAG,GAAG,CAAC,GAAG,EAAE;QACZ,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;OAC3B,CAAC;MACH;GACF;;;OAGI;IACH,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3D,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3D,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC1C,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC;IACpB,CAAC,GAAG,SAAS,CAAC,EAAE;MACd,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;UACT,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;UACjB,CAAC,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;MACpE,OAAO;QACL,GAAG,GAAG,CAAC,GAAG,EAAE;QACZ,GAAG,GAAG,CAAC,GAAG,EAAE;QACZ,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;OACjC,CAAC;MACH;GACF;;EAED,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC;;EAEtB,OAAO,CAAC,CAAC;CACV;;AC/DD,IAAI,KAAK,GAAG,CAAC;IACT,OAAO,GAAG,CAAC;IACX,QAAQ,GAAG,CAAC;IACZ,SAAS,GAAG,IAAI;IAChB,QAAQ;IACR,QAAQ;IACR,SAAS,GAAG,CAAC;IACb,QAAQ,GAAG,CAAC;IACZ,SAAS,GAAG,CAAC;IACb,KAAK,GAAG,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,GAAG,WAAW,GAAG,IAAI;IAC/E,QAAQ,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;;AAE3J,AAAO,SAAS,GAAG,GAAG;EACpB,OAAO,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;CAC7E;;AAED,SAAS,QAAQ,GAAG;EAClB,QAAQ,GAAG,CAAC,CAAC;CACd;;AAED,AAAO,SAAS,KAAK,GAAG;EACtB,IAAI,CAAC,KAAK;EACV,IAAI,CAAC,KAAK;EACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACnB;;AAED,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG;EAClC,WAAW,EAAE,KAAK;EAClB,OAAO,EAAE,SAAS,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;IACvC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;IACtF,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,KAAK,IAAI,EAAE;MACpC,IAAI,QAAQ,EAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;WAC/B,QAAQ,GAAG,IAAI,CAAC;MACrB,QAAQ,GAAG,IAAI,CAAC;KACjB;IACD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,CAAC;GACT;EACD,IAAI,EAAE,WAAW;IACf,IAAI,IAAI,CAAC,KAAK,EAAE;MACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;MAClB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;MACtB,KAAK,EAAE,CAAC;KACT;GACF;CACF,CAAC;;AAEF,AAAO,SAAS,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;EAC3C,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;EAClB,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,OAAO,CAAC,CAAC;CACV;;AAED,AAAO,SAAS,UAAU,GAAG;EAC3B,GAAG,EAAE,CAAC;EACN,EAAE,KAAK,CAAC;EACR,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC;EACpB,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;GACb;EACD,EAAE,KAAK,CAAC;CACT;;AAED,SAAS,IAAI,GAAG;EACd,QAAQ,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;EACjD,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC;EACpB,IAAI;IACF,UAAU,EAAE,CAAC;GACd,SAAS;IACR,KAAK,GAAG,CAAC,CAAC;IACV,GAAG,EAAE,CAAC;IACN,QAAQ,GAAG,CAAC,CAAC;GACd;CACF;;AAED,SAAS,IAAI,GAAG;EACd,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC;EAC/C,IAAI,KAAK,GAAG,SAAS,EAAE,SAAS,IAAI,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC;CAC5D;;AAED,SAAS,GAAG,GAAG;EACb,IAAI,EAAE,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,IAAI,GAAG,QAAQ,CAAC;EAC3C,OAAO,EAAE,EAAE;IACT,IAAI,EAAE,CAAC,KAAK,EAAE;MACZ,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC;MACrC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;KACxB,MAAM;MACL,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;MAC/B,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE,CAAC;KACzC;GACF;EACD,QAAQ,GAAG,EAAE,CAAC;EACd,KAAK,CAAC,IAAI,CAAC,CAAC;CACb;;AAED,SAAS,KAAK,CAAC,IAAI,EAAE;EACnB,IAAI,KAAK,EAAE,OAAO;EAClB,IAAI,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;EAC7C,IAAI,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;EAC5B,IAAI,KAAK,GAAG,EAAE,EAAE;IACd,IAAI,IAAI,GAAG,QAAQ,EAAE,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IAChF,IAAI,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;GAClD,MAAM;IACL,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChF,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;GAC3B;CACF;;AC3Gc,kBAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;EAC7C,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;EAClB,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;EACnC,CAAC,CAAC,OAAO,CAAC,SAAS,OAAO,EAAE;IAC1B,CAAC,CAAC,IAAI,EAAE,CAAC;IACT,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;GAC3B,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;EAChB,OAAO,CAAC,CAAC;CACV;;ACPD,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC9D,IAAI,UAAU,GAAG,EAAE,CAAC;;AAEpB,AAAO,IAAI,OAAO,GAAG,CAAC,CAAC;AACvB,AAAO,IAAI,SAAS,GAAG,CAAC,CAAC;AACzB,AAAO,IAAI,QAAQ,GAAG,CAAC,CAAC;AACxB,AAAO,IAAI,OAAO,GAAG,CAAC,CAAC;AACvB,AAAO,IAAI,OAAO,GAAG,CAAC,CAAC;AACvB,AAAO,IAAI,MAAM,GAAG,CAAC,CAAC;AACtB,AAAO,IAAI,KAAK,GAAG,CAAC,CAAC;;AAErB,AAAe,iBAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EAC5D,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;EAClC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;OAClC,IAAI,EAAE,IAAI,SAAS,EAAE,OAAO;EACjC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE;IACf,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,OAAO;GACf,CAAC,CAAC;CACJ;;AAED,AAAO,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE;EAC7B,IAAI,QAAQ,GAAGX,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;EAC7B,IAAI,QAAQ,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;EAC7E,OAAO,QAAQ,CAAC;CACjB;;AAED,AAAO,SAASC,KAAG,CAAC,IAAI,EAAE,EAAE,EAAE;EAC5B,IAAI,QAAQ,GAAGD,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;EAC7B,IAAI,QAAQ,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;EAC3E,OAAO,QAAQ,CAAC;CACjB;;AAED,AAAO,SAASA,KAAG,CAAC,IAAI,EAAE,EAAE,EAAE;EAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;EACjC,IAAI,CAAC,QAAQ,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;EACrF,OAAO,QAAQ,CAAC;CACjB;;AAED,SAAS,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE;EAC9B,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY;MAC7B,KAAK,CAAC;;;;EAIV,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;EACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;EAE3C,SAAS,QAAQ,CAAC,OAAO,EAAE;IACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;;IAGjD,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;GACxD;;EAED,SAAS,KAAK,CAAC,OAAO,EAAE;IACtB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;;IAGf,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC;;IAE5C,KAAK,CAAC,IAAI,SAAS,EAAE;MACnB,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACjB,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,SAAS;;;;;MAKnC,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,OAAOY,SAAO,CAAC,KAAK,CAAC,CAAC;;;MAG/C,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE;QACvB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;OACrB;;;WAGI,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QAChB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3D,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;OACrB;KACF;;;;;;IAMDA,SAAO,CAAC,WAAW;MACjB,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;QAC1B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,CAAC;OACf;KACF,CAAC,CAAC;;;;IAIH,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACtB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,OAAO;IACpC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;;;IAGrB,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;QAC7E,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;OAChB;KACF;IACD,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;GACtB;;EAED,SAAS,IAAI,CAAC,OAAO,EAAE;IACrB,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC;QAChI,CAAC,GAAG,CAAC,CAAC;QACN,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;;IAErB,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;MACd,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACxB;;;IAGD,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE;MACzB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;MACjE,IAAI,EAAE,CAAC;KACR;GACF;;EAED,SAAS,IAAI,GAAG;IACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAClB,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC;IACrB,KAAK,IAAI,CAAC,IAAI,SAAS,EAAE,OAAO;IAChC,OAAO,IAAI,CAAC,YAAY,CAAC;GAC1B;CACF;;ACtJc,kBAAQ,CAAC,IAAI,EAAE,IAAI,EAAE;EAClC,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY;MAC7B,QAAQ;MACR,MAAM;MACN,KAAK,GAAG,IAAI;MACZ,CAAC,CAAC;;EAEN,IAAI,CAAC,SAAS,EAAE,OAAO;;EAEvB,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;;EAEvC,KAAK,CAAC,IAAI,SAAS,EAAE;IACnB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,SAAS,EAAE;IACzE,MAAM,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;IAC9D,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvG,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;GACrB;;EAED,IAAI,KAAK,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC;CACrC;;ACrBc,4BAAQ,CAAC,IAAI,EAAE;EAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW;IAC1B,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;GACvB,CAAC,CAAC;CACJ;;ACJD,SAAS,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE;EAC7B,IAAI,MAAM,EAAE,MAAM,CAAC;EACnB,OAAO,WAAW;IAChB,IAAI,QAAQ,GAAGX,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACxB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;;;;;IAK3B,IAAI,KAAK,KAAK,MAAM,EAAE;MACpB,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;MACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;QAC7C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE;UAC3B,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;UACxB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UACpB,MAAM;SACP;OACF;KACF;;IAED,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;GACzB,CAAC;CACH;;AAED,SAAS,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;EACtC,IAAI,MAAM,EAAE,MAAM,CAAC;EACnB,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC;EACjD,OAAO,WAAW;IAChB,IAAI,QAAQ,GAAGA,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACxB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;;;;;IAK3B,IAAI,KAAK,KAAK,MAAM,EAAE;MACpB,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;MAClC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;QAC7E,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE;UAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UACd,MAAM;SACP;OACF;MACD,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7B;;IAED,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;GACzB,CAAC;CACH;;AAED,AAAe,yBAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EACnC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;;EAElB,IAAI,IAAI,EAAE,CAAC;;EAEX,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;IACxB,IAAI,KAAK,GAAGD,KAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MAC/C,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,EAAE;QAChC,OAAO,CAAC,CAAC,KAAK,CAAC;OAChB;KACF;IACD,OAAO,IAAI,CAAC;GACb;;EAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,WAAW,GAAG,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;CAClF;;AAED,AAAO,SAAS,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;EAClD,IAAI,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC;;EAExB,UAAU,CAAC,IAAI,CAAC,WAAW;IACzB,IAAI,QAAQ,GAAGC,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GAChF,CAAC,CAAC;;EAEH,OAAO,SAAS,IAAI,EAAE;IACpB,OAAOD,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;GAClC,CAAC;CACH;;AC7Ec,oBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;EAC5B,IAAI,CAAC,CAAC;EACN,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,GAAG,iBAAiB;QAC3C,CAAC,YAAY,KAAK,GAAG,cAAc;QACnC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,cAAc;QACvC,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAChC;;ACJD,SAASa,YAAU,CAAC,IAAI,EAAE;EACxB,OAAO,WAAW;IAChB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;GAC5B,CAAC;CACH;;AAED,SAASC,cAAY,CAAC,QAAQ,EAAE;EAC9B,OAAO,WAAW;IAChB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;GACxD,CAAC;CACH;;AAED,SAASC,cAAY,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;EAC/C,IAAI,QAAQ;MACR,OAAO,GAAG,MAAM,GAAG,EAAE;MACrB,YAAY,CAAC;EACjB,OAAO,WAAW;IAChB,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,OAAO,KAAK,OAAO,GAAG,IAAI;UAC3B,OAAO,KAAK,QAAQ,GAAG,YAAY;UACnC,YAAY,GAAG,WAAW,CAAC,QAAQ,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC;GAC9D,CAAC;CACH;;AAED,SAASC,gBAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;EACrD,IAAI,QAAQ;MACR,OAAO,GAAG,MAAM,GAAG,EAAE;MACrB,YAAY,CAAC;EACjB,OAAO,WAAW;IAChB,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClE,OAAO,OAAO,KAAK,OAAO,GAAG,IAAI;UAC3B,OAAO,KAAK,QAAQ,GAAG,YAAY;UACnC,YAAY,GAAG,WAAW,CAAC,QAAQ,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC;GAC9D,CAAC;CACH;;AAED,SAASC,cAAY,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE;EAC9C,IAAI,QAAQ;MACR,QAAQ;MACR,YAAY,CAAC;EACjB,OAAO,WAAW;IAChB,IAAI,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAC3C,IAAI,MAAM,IAAI,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC;IACtB,OAAO,OAAO,KAAK,OAAO,GAAG,IAAI;UAC3B,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,GAAG,YAAY;WAC1D,QAAQ,GAAG,OAAO,EAAE,YAAY,GAAG,WAAW,CAAC,QAAQ,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;GACpF,CAAC;CACH;;AAED,SAASC,gBAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE;EACpD,IAAI,QAAQ;MACR,QAAQ;MACR,YAAY,CAAC;EACjB,OAAO,WAAW;IAChB,IAAI,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAC3C,IAAI,MAAM,IAAI,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvF,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC;IACtB,OAAO,OAAO,KAAK,OAAO,GAAG,IAAI;UAC3B,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,GAAG,YAAY;WAC1D,QAAQ,GAAG,OAAO,EAAE,YAAY,GAAG,WAAW,CAAC,QAAQ,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;GACpF,CAAC;CACH;;AAED,AAAe,wBAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EACnC,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,KAAK,WAAW,GAAGC,uBAAoB,GAAG,WAAW,CAAC;EAClG,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,KAAK,KAAK,UAAU;QACjD,CAAC,QAAQ,CAAC,KAAK,GAAGD,gBAAc,GAAGD,cAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;QACtG,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAGH,cAAY,GAAGD,YAAU,EAAE,QAAQ,CAAC;QACtE,CAAC,QAAQ,CAAC,KAAK,GAAGG,gBAAc,GAAGD,cAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;CAC7E;;AC3ED,SAAS,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE;EAChC,OAAO,SAAS,CAAC,EAAE;IACjB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;GAC/B,CAAC;CACH;;AAED,SAAS,iBAAiB,CAAC,QAAQ,EAAE,CAAC,EAAE;EACtC,OAAO,SAAS,CAAC,EAAE;IACjB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;GAC3D,CAAC;CACH;;AAED,SAAS,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE;EACpC,IAAI,EAAE,EAAE,EAAE,CAAC;EACX,SAAS,KAAK,GAAG;IACf,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC9D,OAAO,EAAE,CAAC;GACX;EACD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;EACrB,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;EAC9B,IAAI,EAAE,EAAE,EAAE,CAAC;EACX,SAAS,KAAK,GAAG;IACf,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,EAAE,CAAC;GACX;EACD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;EACrB,OAAO,KAAK,CAAC;CACd;;AAED,AAAe,6BAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EACnC,IAAI,GAAG,GAAG,OAAO,GAAG,IAAI,CAAC;EACzB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC;EACvE,IAAI,KAAK,IAAI,IAAI,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAChD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC;EACjD,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,WAAW,GAAG,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;CACrF;;ACzCD,SAAS,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE;EAChC,OAAO,WAAW;IAChB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GACtD,CAAC;CACH;;AAED,SAAS,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE;EAChC,OAAO,KAAK,GAAG,CAAC,KAAK,EAAE,WAAW;IAChC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;GAC9B,CAAC;CACH;;AAED,AAAe,yBAAQ,CAAC,KAAK,EAAE;EAC7B,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;;EAElB,OAAO,SAAS,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,UAAU;YAClC,aAAa;YACb,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9Bf,KAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;CAClC;;ACpBD,SAAS,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE;EACnC,OAAO,WAAW;IAChBC,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GACxD,CAAC;CACH;;AAED,SAAS,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE;EACnC,OAAO,KAAK,GAAG,CAAC,KAAK,EAAE,WAAW;IAChCA,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;GAChC,CAAC;CACH;;AAED,AAAe,4BAAQ,CAAC,KAAK,EAAE;EAC7B,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;;EAElB,OAAO,SAAS,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,UAAU;YAClC,gBAAgB;YAChB,gBAAgB,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACjCD,KAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;CACrC;;ACpBD,SAAS,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE;EAC/B,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC;EACjD,OAAO,WAAW;IAChBC,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;GAC5B,CAAC;CACH;;AAED,AAAe,wBAAQ,CAAC,KAAK,EAAE;EAC7B,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;;EAElB,OAAO,SAAS,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAClCD,KAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;CACjC;;ACZc,0BAAQ,CAAC,KAAK,EAAE;EAC7B,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;;EAExD,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAC9F,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACnG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE;QAClE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OACrB;KACF;GACF;;EAED,OAAO,IAAI,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACvE;;ACbc,yBAAQ,CAAC,UAAU,EAAE;EAClC,IAAI,UAAU,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC;;EAEjD,KAAK,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IACxK,KAAK,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MAC/H,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;QACjC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;OACjB;KACF;GACF;;EAED,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;IAClB,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;GACxB;;EAED,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACpE;;AChBD,SAAS,KAAK,CAAC,IAAI,EAAE;EACnB,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;IACzD,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;GAC5B,CAAC,CAAC;CACJ;;AAED,SAAS,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;EACtC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAGC,KAAG,CAAC;EAC7C,OAAO,WAAW;IAChB,IAAI,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACxB,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;;;;;IAKrB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;;IAE7D,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAC;GACnB,CAAC;CACH;;AAED,AAAe,sBAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE;EACtC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;;EAElB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC;QACrBD,KAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;CACjD;;AC/BD,SAAS,cAAc,CAAC,EAAE,EAAE;EAC1B,OAAO,WAAW;IAChB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAC7B,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO;IACvD,IAAI,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;GACtC,CAAC;CACH;;AAED,AAAe,0BAAQ,GAAG;EACxB,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CACxD;;ACNc,0BAAQ,CAAC,MAAM,EAAE;EAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK;MACjB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;;EAElB,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;;EAE5D,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAC9F,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACtH,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;QAC/E,IAAI,UAAU,IAAI,IAAI,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzD,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;QACtB,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAEA,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;OAC7D;KACF;GACF;;EAED,OAAO,IAAI,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;CAC3D;;ACjBc,6BAAQ,CAAC,MAAM,EAAE;EAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK;MACjB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;;EAElB,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;;EAE/D,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAClG,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACrE,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;QACnB,KAAK,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,GAAGA,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;UACtI,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;YACvB,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;WACjD;SACF;QACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OACpB;KACF;GACF;;EAED,OAAO,IAAI,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;CACrD;;ACvBD,IAAIoB,WAAS,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC;;AAEhD,AAAe,6BAAQ,GAAG;EACxB,OAAO,IAAIA,WAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CACnD;;ACAD,SAAS,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE;EACpC,IAAI,QAAQ;MACR,QAAQ;MACR,YAAY,CAAC;EACjB,OAAO,WAAW;IAChB,IAAI,OAAO,GAAGC,UAAK,CAAC,IAAI,EAAE,IAAI,CAAC;QAC3B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAEA,UAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,OAAO,OAAO,KAAK,OAAO,GAAG,IAAI;UAC3B,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,GAAG,YAAY;UAC3D,YAAY,GAAG,WAAW,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC;GAC1E,CAAC;CACH;;AAED,SAASC,aAAW,CAAC,IAAI,EAAE;EACzB,OAAO,WAAW;IAChB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;GACjC,CAAC;CACH;;AAED,SAASC,eAAa,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;EAChD,IAAI,QAAQ;MACR,OAAO,GAAG,MAAM,GAAG,EAAE;MACrB,YAAY,CAAC;EACjB,OAAO,WAAW;IAChB,IAAI,OAAO,GAAGF,UAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,OAAO,OAAO,KAAK,OAAO,GAAG,IAAI;UAC3B,OAAO,KAAK,QAAQ,GAAG,YAAY;UACnC,YAAY,GAAG,WAAW,CAAC,QAAQ,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC;GAC9D,CAAC;CACH;;AAED,SAASG,eAAa,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE;EAC/C,IAAI,QAAQ;MACR,QAAQ;MACR,YAAY,CAAC;EACjB,OAAO,WAAW;IAChB,IAAI,OAAO,GAAGH,UAAK,CAAC,IAAI,EAAE,IAAI,CAAC;QAC3B,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;QACpB,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC;IAC1B,IAAI,MAAM,IAAI,IAAI,EAAE,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAEA,UAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5F,OAAO,OAAO,KAAK,OAAO,GAAG,IAAI;UAC3B,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,GAAG,YAAY;WAC1D,QAAQ,GAAG,OAAO,EAAE,YAAY,GAAG,WAAW,CAAC,QAAQ,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;GACpF,CAAC;CACH;;AAED,SAAS,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE;EAClC,IAAI,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,QAAQ,GAAG,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,GAAG,EAAE,MAAM,CAAC;EAC7E,OAAO,WAAW;IAChB,IAAI,QAAQ,GAAGpB,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACxB,EAAE,GAAG,QAAQ,CAAC,EAAE;QAChB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,KAAK,MAAM,GAAGqB,aAAW,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;;;;;IAKhG,IAAI,EAAE,KAAK,GAAG,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;;IAEpG,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAC;GACnB,CAAC;CACH;;AAED,AAAe,yBAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;EAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,MAAM,WAAW,GAAGH,uBAAoB,GAAG,WAAW,CAAC;EAC1E,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI;OACtB,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;OACpC,EAAE,CAAC,YAAY,GAAG,IAAI,EAAEG,aAAW,CAAC,IAAI,CAAC,CAAC;MAC3C,OAAO,KAAK,KAAK,UAAU,GAAG,IAAI;OACjC,UAAU,CAAC,IAAI,EAAEE,eAAa,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;OAClF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;MACvC,IAAI;OACH,UAAU,CAAC,IAAI,EAAED,eAAa,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC;OACzD,EAAE,CAAC,YAAY,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;CACpC;;AC/ED,SAAS,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE;EAC3C,OAAO,SAAS,CAAC,EAAE;IACjB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;GAC9C,CAAC;CACH;;AAED,SAAS,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;EACzC,IAAI,CAAC,EAAE,EAAE,CAAC;EACV,SAAS,KAAK,GAAG;IACf,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClE,OAAO,CAAC,CAAC;GACV;EACD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;EACrB,OAAO,KAAK,CAAC;CACd;;AAED,AAAe,8BAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;EAC7C,IAAI,GAAG,GAAG,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;EAClC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC;EACvE,IAAI,KAAK,IAAI,IAAI,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAChD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC;EACjD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;CACnF;;ACrBD,SAASE,cAAY,CAAC,KAAK,EAAE;EAC3B,OAAO,WAAW;IAChB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;GAC1B,CAAC;CACH;;AAED,SAASC,cAAY,CAAC,KAAK,EAAE;EAC3B,OAAO,WAAW;IAChB,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;GACjD,CAAC;CACH;;AAED,AAAe,wBAAQ,CAAC,KAAK,EAAE;EAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,UAAU;QAC/CA,cAAY,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7CD,cAAY,CAAC,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;CACtD;;AChBc,8BAAQ,GAAG;EACxB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK;MACjB,GAAG,GAAG,IAAI,CAAC,GAAG;MACd,GAAG,GAAG,KAAK,EAAE,CAAC;;EAElB,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IACpE,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACrE,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;QACnB,IAAI,OAAO,GAAGzB,KAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE;UAClC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ;UACrD,KAAK,EAAE,CAAC;UACR,QAAQ,EAAE,OAAO,CAAC,QAAQ;UAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;OACJ;KACF;GACF;;EAED,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;CACzD;;ACrBc,uBAAQ,GAAG;EACxB,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;EAC7D,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;IAC3C,IAAI,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;QACxB,GAAG,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;;IAE/D,IAAI,CAAC,IAAI,CAAC,WAAW;MACnB,IAAI,QAAQ,GAAGC,KAAG,CAAC,IAAI,EAAE,EAAE,CAAC;UACxB,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;;;;;MAKrB,IAAI,EAAE,KAAK,GAAG,EAAE;QACd,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;QACxB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OACrB;;MAED,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAC;KACnB,CAAC,CAAC;GACJ,CAAC,CAAC;CACJ;;ACLD,IAAI,EAAE,GAAG,CAAC,CAAC;;AAEX,AAAO,SAAS,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;EACpD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;EACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;EACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAClB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;CACf;;AAED,AAAe,SAAS,UAAU,CAAC,IAAI,EAAE;EACvC,OAAO,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;CACrC;;AAED,AAAO,SAAS,KAAK,GAAG;EACtB,OAAO,EAAE,EAAE,CAAC;CACb;;AAED,IAAI,mBAAmB,GAAG,SAAS,CAAC,SAAS,CAAC;;AAE9C,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,GAAG;EAC5C,WAAW,EAAE,UAAU;EACvB,MAAM,EAAE,iBAAiB;EACzB,SAAS,EAAE,oBAAoB;EAC/B,MAAM,EAAE,iBAAiB;EACzB,KAAK,EAAE,gBAAgB;EACvB,SAAS,EAAE,oBAAoB;EAC/B,UAAU,EAAE,qBAAqB;EACjC,IAAI,EAAE,mBAAmB,CAAC,IAAI;EAC9B,KAAK,EAAE,mBAAmB,CAAC,KAAK;EAChC,IAAI,EAAE,mBAAmB,CAAC,IAAI;EAC9B,IAAI,EAAE,mBAAmB,CAAC,IAAI;EAC9B,KAAK,EAAE,mBAAmB,CAAC,KAAK;EAChC,IAAI,EAAE,mBAAmB,CAAC,IAAI;EAC9B,EAAE,EAAE,aAAa;EACjB,IAAI,EAAE,eAAe;EACrB,SAAS,EAAE,oBAAoB;EAC/B,KAAK,EAAE,gBAAgB;EACvB,UAAU,EAAE,qBAAqB;EACjC,IAAI,EAAE,eAAe;EACrB,MAAM,EAAE,iBAAiB;EACzB,KAAK,EAAE,gBAAgB;EACvB,KAAK,EAAE,gBAAgB;EACvB,QAAQ,EAAE,mBAAmB;EAC7B,IAAI,EAAE,eAAe;EACrB,GAAG,EAAE,cAAc;CACpB,CAAC;;ACzDK,SAAS,UAAU,CAAC,CAAC,EAAE;EAC5B,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC/D;;ACLD,IAAI,aAAa,GAAG;EAClB,IAAI,EAAE,IAAI;EACV,KAAK,EAAE,CAAC;EACR,QAAQ,EAAE,GAAG;EACb,IAAI,EAAE0B,UAAc;CACrB,CAAC;;AAEF,SAAS,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE;EACzB,IAAI,MAAM,CAAC;EACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE;IAC9D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE;MAC7B,OAAO,aAAa,CAAC,IAAI,GAAG,GAAG,EAAE,EAAE,aAAa,CAAC;KAClD;GACF;EACD,OAAO,MAAM,CAAC;CACf;;AAED,AAAe,6BAAQ,CAAC,IAAI,EAAE;EAC5B,IAAI,EAAE;MACF,MAAM,CAAC;;EAEX,IAAI,IAAI,YAAY,UAAU,EAAE;IAC9B,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;GAClC,MAAM;IACL,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,MAAM,GAAG,aAAa,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;GAC7F;;EAED,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IACpE,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACrE,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;QACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;OACjE;KACF;GACF;;EAED,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;CACxD;;ACrCD,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,mBAAmB,CAAC;AACpD,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,oBAAoB,CAAC;;ACLvC,mBAAQ,CAAC,CAAC,EAAE;EACzB,OAAO,WAAW;IAChB,OAAO,CAAC,CAAC;GACV,CAAC;CACH;;ACJc,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;EACzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;CAC5B;;ACJM,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACjC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACZ;;AAED,SAAS,CAAC,SAAS,GAAG;EACpB,WAAW,EAAE,SAAS;EACtB,KAAK,EAAE,SAAS,CAAC,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;GACnE;EACD,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;IACxB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;GACnG;EACD,KAAK,EAAE,SAAS,KAAK,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;GACjE;EACD,MAAM,EAAE,SAAS,CAAC,EAAE;IAClB,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;GAC5B;EACD,MAAM,EAAE,SAAS,CAAC,EAAE;IAClB,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;GAC5B;EACD,MAAM,EAAE,SAAS,QAAQ,EAAE;IACzB,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;GAC3E;EACD,OAAO,EAAE,SAAS,CAAC,EAAE;IACnB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;GAC9B;EACD,OAAO,EAAE,SAAS,CAAC,EAAE;IACnB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;GAC9B;EACD,QAAQ,EAAE,SAAS,CAAC,EAAE;IACpB,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;GAC5E;EACD,QAAQ,EAAE,SAAS,CAAC,EAAE;IACpB,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;GAC5E;EACD,QAAQ,EAAE,WAAW;IACnB,OAAO,YAAY,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;GACzE;CACF,CAAC;;AAEF,AAAO,IAAIC,UAAQ,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;ACzCtC,SAAS,aAAa,GAAG;EAC9B,KAAK,CAAC,wBAAwB,EAAE,CAAC;CAClC;;AAED,AAAe,kBAAQ,GAAG;EACxB,KAAK,CAAC,cAAc,EAAE,CAAC;EACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;CAClC;;ACCD;AACA,SAAS,aAAa,GAAG;EACvB,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;CACxC;;AAED,SAAS,aAAa,GAAG;EACvB,IAAI,CAAC,GAAG,IAAI,CAAC;EACb,IAAI,CAAC,YAAY,UAAU,EAAE;IAC3B,CAAC,GAAG,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;MAC7B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;MACtB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;KACtD;IACD,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;GAClE;EACD,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;CAClD;;AAED,SAAS,gBAAgB,GAAG;EAC1B,OAAO,IAAI,CAAC,MAAM,IAAIA,UAAQ,CAAC;CAChC;;AAED,SAAS,iBAAiB,GAAG;EAC3B,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;CACrF;;AAED,SAAS,gBAAgB,GAAG;EAC1B,OAAO,SAAS,CAAC,cAAc,KAAK,cAAc,IAAI,IAAI,CAAC,CAAC;CAC7D;;AAED,SAAS,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE;EAC5D,IAAI,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC7D,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC7D,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC7D,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAClE,OAAO,SAAS,CAAC,SAAS;IACxB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;IAClE,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;GACnE,CAAC;CACH;;AAED,AAAe,aAAQ,GAAG;EACxB,IAAI,MAAM,GAAG,aAAa;MACtB,MAAM,GAAG,aAAa;MACtB,SAAS,GAAG,gBAAgB;MAC5B,UAAU,GAAG,iBAAiB;MAC9B,SAAS,GAAG,gBAAgB;MAC5B,WAAW,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;MAC3B,eAAe,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;MAChE,QAAQ,GAAG,GAAG;MACd,WAAW,GAAG,eAAe;MAC7B,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;MAC5C,aAAa;MACb,WAAW;MACX,UAAU,GAAG,GAAG;MAChB,UAAU,GAAG,GAAG;MAChB,cAAc,GAAG,CAAC,CAAC;;EAEvB,SAAS,IAAI,CAAC,SAAS,EAAE;IACvB,SAAS;SACJ,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SACpC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC;SACzB,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC;SACjC,EAAE,CAAC,eAAe,EAAE,UAAU,CAAC;OACjC,MAAM,CAAC,SAAS,CAAC;SACf,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;SACnC,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC;SAChC,EAAE,CAAC,gCAAgC,EAAE,UAAU,CAAC;SAChD,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC;SAC7B,KAAK,CAAC,6BAA6B,EAAE,eAAe,CAAC,CAAC;GAC5D;;EAED,IAAI,CAAC,SAAS,GAAG,SAAS,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;IACtD,IAAI,SAAS,GAAG,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC;IAC3E,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC/C,IAAI,UAAU,KAAK,SAAS,EAAE;MAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;KACxC,MAAM;MACL,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,WAAW;QACpC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;aACnB,KAAK,EAAE;aACP,IAAI,CAAC,IAAI,EAAE,OAAO,SAAS,KAAK,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;aAC1F,GAAG,EAAE,CAAC;OACZ,CAAC,CAAC;KACJ;GACF,CAAC;;EAEF,IAAI,CAAC,OAAO,GAAG,SAAS,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE;IACvC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW;MACjC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;UAClB,EAAE,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;MAChE,OAAO,EAAE,GAAG,EAAE,CAAC;KAChB,EAAE,CAAC,CAAC,CAAC;GACP,CAAC;;EAEF,IAAI,CAAC,OAAO,GAAG,SAAS,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE;IACvC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW;MACnC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;UACjC,EAAE,GAAG,IAAI,CAAC,MAAM;UAChB,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;UACrF,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;UAClB,EAAE,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;MAChE,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;KACxE,EAAE,CAAC,CAAC,CAAC;GACP,CAAC;;EAEF,IAAI,CAAC,WAAW,GAAG,SAAS,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE;IAC3C,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW;MACnC,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;QACpC,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;QACtD,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;OACvD,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;KACpD,CAAC,CAAC;GACJ,CAAC;;EAEF,IAAI,CAAC,WAAW,GAAG,SAAS,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC9C,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW;MACnC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;UACjC,CAAC,GAAG,IAAI,CAAC,MAAM;UACf,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;MAC1F,OAAO,SAAS,CAACA,UAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QACpE,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;OACzD,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;KACxB,EAAE,CAAC,CAAC,CAAC;GACP,CAAC;;EAEF,SAAS,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE;IAC3B,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;GACnF;;EAED,SAAS,SAAS,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC9F;;EAED,SAAS,QAAQ,CAAC,MAAM,EAAE;IACxB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;GACnF;;EAED,SAAS,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;IAC9C,UAAU;SACL,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;SAClE,EAAE,CAAC,yBAAyB,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;SAC7E,KAAK,CAAC,MAAM,EAAE,WAAW;UACxB,IAAI,IAAI,GAAG,IAAI;cACX,IAAI,GAAG,SAAS;cAChB,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;cACvB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;cAC5B,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK;cAC/F,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;cAClD,CAAC,GAAG,IAAI,CAAC,MAAM;cACf,CAAC,GAAG,OAAO,SAAS,KAAK,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS;cAC7E,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UAC9E,OAAO,SAAS,CAAC,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;iBACd,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC5F,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;WACjB,CAAC;SACH,CAAC,CAAC;GACR;;EAED,SAAS,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;IAClC,OAAO,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;GAC9D;;EAED,SAAS,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE;IAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;GACf;;EAED,OAAO,CAAC,SAAS,GAAG;IAClB,KAAK,EAAE,WAAW;MAChB,IAAI,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;OACpB;MACD,OAAO,IAAI,CAAC;KACb;IACD,IAAI,EAAE,SAAS,GAAG,EAAE,SAAS,EAAE;MAC7B,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,KAAK,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MACnF,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;MACtF,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;MACtF,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;MAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MAClB,OAAO,IAAI,CAAC;KACb;IACD,GAAG,EAAE,WAAW;MACd,IAAI,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OAClB;MACD,OAAO,IAAI,CAAC;KACb;IACD,IAAI,EAAE,SAAS,IAAI,EAAE;MACnB,WAAW,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACpH;GACF,CAAC;;EAEF,SAAS,OAAO,GAAG;IACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO;IAC3C,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;QAC5B,CAAC,GAAG,IAAI,CAAC,MAAM;QACf,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5G,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;;;;IAIpB,IAAI,CAAC,CAAC,KAAK,EAAE;MACX,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QACpD,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OACvC;MACD,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KACvB;;;SAGI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO;;;SAGtB;MACH,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3B,SAAS,CAAC,IAAI,CAAC,CAAC;MAChB,CAAC,CAAC,KAAK,EAAE,CAAC;KACX;;IAEDC,SAAO,EAAE,CAAC;IACV,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;;IAEtG,SAAS,UAAU,GAAG;MACpB,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;MACf,CAAC,CAAC,GAAG,EAAE,CAAC;KACT;GACF;;EAED,SAAS,WAAW,GAAG;IACrB,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO;IAC1D,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;QAClC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,IAAI,CAAC;QAClG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;QACf,EAAE,GAAG,KAAK,CAAC,OAAO;QAClB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;;IAEvB,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,aAAa,EAAE,CAAC;IAChB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,KAAK,EAAE,CAAC;;IAEV,SAAS,UAAU,GAAG;MACpBA,SAAO,EAAE,CAAC;MACV,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;QACZ,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QACrD,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC;OAC9C;MACD,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;KACzH;;IAED,SAAS,UAAU,GAAG;MACpB,CAAC,CAAC,EAAE,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;MAC1CC,OAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;MAChCD,SAAO,EAAE,CAAC;MACV,CAAC,CAAC,GAAG,EAAE,CAAC;KACT;GACF;;EAED,SAAS,UAAU,GAAG;IACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO;IAC3C,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM;QAChB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;QAChB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QAClB,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;QACtC,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;;IAErGA,SAAO,EAAE,CAAC;IACV,IAAI,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SACjF,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;GAC5C;;EAED,SAAS,YAAY,GAAG;IACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO;IAC3C,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO;QACvB,CAAC,GAAG,OAAO,CAAC,MAAM;QAClB,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC;QAC/D,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;IAErB,aAAa,EAAE,CAAC;IAChB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACtB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;MACvD,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;MAC7C,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;WACrE,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;KACtE;;IAED,IAAI,aAAa,EAAE,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;;IAE/D,IAAI,OAAO,EAAE;MACX,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,aAAa,GAAG,UAAU,CAAC,WAAW,EAAE,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;MAC7F,SAAS,CAAC,IAAI,CAAC,CAAC;MAChB,CAAC,CAAC,KAAK,EAAE,CAAC;KACX;GACF;;EAED,SAAS,UAAU,GAAG;IACpB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO;IAC5B,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;QAC5B,OAAO,GAAG,KAAK,CAAC,cAAc;QAC9B,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;IAEnCA,SAAO,EAAE,CAAC;IACV,IAAI,aAAa,EAAE,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC/D,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACX,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACtB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;MACvD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;WACzD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACpE;IACD,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAClB,IAAI,CAAC,CAAC,MAAM,EAAE;MACZ,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;UAClC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;UAClC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;UAC1D,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;MAC/D,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;MACjC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;MAC/C,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KAChD;SACI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC/C,OAAO;IACZ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;GAC3E;;EAED,SAAS,UAAU,GAAG;IACpB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO;IAC5B,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;QAC5B,OAAO,GAAG,KAAK,CAAC,cAAc;QAC9B,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;;IAE7B,aAAa,EAAE,CAAC;IAChB,IAAI,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACzE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;MACtB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;MACf,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;WACzD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;KACpE;IACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IAChE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD;MACH,CAAC,CAAC,GAAG,EAAE,CAAC;;MAER,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE;QAChB,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;OACjC;KACF;GACF;;EAED,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE;IAC5B,OAAO,SAAS,CAAC,MAAM,IAAI,UAAU,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,GAAGrB,UAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC;GACxG,CAAC;;EAEF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;IACxB,OAAO,SAAS,CAAC,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,GAAGA,UAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC;GACjG,CAAC;;EAEF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE;IAC3B,OAAO,SAAS,CAAC,MAAM,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,GAAGA,UAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC;GACvG,CAAC;;EAEF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;IACxB,OAAO,SAAS,CAAC,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,GAAGA,UAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC;GAC1I,CAAC;;EAEF,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE;IAC7B,OAAO,SAAS,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;GACrH,CAAC;;EAEF,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,EAAE;IACjC,OAAO,SAAS,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;GAC7Q,CAAC;;EAEF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE;IAC3B,OAAO,SAAS,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC;GAC7D,CAAC;;EAEF,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE;IAC1B,OAAO,SAAS,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC;GAC5D,CAAC;;EAEF,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE;IAC7B,OAAO,SAAS,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC,EAAE,IAAI,IAAI,WAAW,CAAC;GACjE,CAAC;;EAEF,IAAI,CAAC,EAAE,GAAG,WAAW;IACnB,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACrD,OAAO,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;GAC3C,CAAC;;EAEF,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,EAAE;IAC/B,OAAO,SAAS,CAAC,MAAM,IAAI,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;GAC7F,CAAC;;EAEF,OAAO,IAAI,CAAC;CACb;;;;;;AC5ZD,iBAAc,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;EACpC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC;;EAEzB,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;IAC1D,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EAAE,OAAO,KAAK,CAAC;;IAElD,IAAI,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC;IACpB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;MACpB,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;MAClB,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC;MACrC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC;MACvC,OAAO,IAAI,CAAC;KACb;;;;IAID,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;IAClF,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/E,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;;IAEnF,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACrB,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC;;IAEnD,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC;MACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC;;IAEtE,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG;MAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC;KAC1C;;IAED,OAAO,IAAI,CAAC;GACb;;;EAGD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACvB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrCF,CAAC,YAAY;;CAGZ,IAAI,MAAM,GAAG,EAAE,CAAC,cAAc,CAAC;;CAE/B,SAAS,UAAU,IAAI;EACtB,IAAI,OAAO,GAAG,EAAE,CAAC;;EAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;GAC1C,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;GACvB,IAAI,CAAC,GAAG,EAAE,SAAS;;GAEnB,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC;;GAEzB,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE;IACjD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;IAC5C,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxC,IAAI,KAAK,EAAE;KACV,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;IACD,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;IAChC,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE;KACpB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;MACtC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAClB;KACD;IACD;GACD;;EAED,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACzB;;CAED,IAAI,CAAiC,MAAM,CAAC,OAAO,EAAE;EACpD,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC;EAChC,cAAc,GAAG,UAAU,CAAC;EAC5B,MAAM,AAKA;EACN,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;EAC/B;CACD,EAAE,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnDL;;;;;;;AASA,IAAI,oBAAoB,GAAG,8CAA8C,CAAC;;AAE1E,0BAAc,GAAG,oBAAoB,CAAC;;ACAtC,SAAS,aAAa,GAAG,EAAE;AAC3B,SAAS,sBAAsB,GAAG,EAAE;AACpC,sBAAsB,CAAC,iBAAiB,GAAG,aAAa,CAAC;;AAEzD,4BAAc,GAAG,WAAW;EAC1B,SAAS,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE;IAC5E,IAAI,MAAM,KAAKuB,sBAAoB,EAAE;;MAEnC,OAAO;KACR;IACD,IAAI,GAAG,GAAG,IAAI,KAAK;MACjB,sFAAsF;MACtF,+CAA+C;MAC/C,gDAAgD;KACjD,CAAC;IACF,GAAG,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACjC,MAAM,GAAG,CAAC;GACX,EACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EACvB,SAAS,OAAO,GAAG;IACjB,OAAO,IAAI,CAAC;GACb;;EAGD,IAAI,cAAc,GAAG;IACnB,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;;IAEZ,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,OAAO;IACnB,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,OAAO;IAClB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;;IAEd,cAAc,EAAE,sBAAsB;IACtC,iBAAiB,EAAE,aAAa;GACjC,CAAC;;EAEF,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC;;EAE1C,OAAO,cAAc,CAAC;CACvB,CAAC;;;;;;;;;;ACxDF,AAOO;;;EAGL,cAAc,GAAGvC,wBAAqC,EAAE,CAAC;CAC1D;;;;AClBD;AAEA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE;EAC3C,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AACH,mBAAmB,GAAG,WAAW,CAAC;AAClC,kBAAkB,GAAG,UAAU,CAAC;AAChC,aAAa,GAAG,KAAK,CAAC;AACtB,WAAW,GAAG,GAAG,CAAC;AAClB,iBAAiB,GAAG,SAAS,CAAC;;;AAG9B,SAAS,WAAW,CAAC,KAAK;;EAExB,QAAQ;;;;AAIV;EACE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACtD,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;GACrE;CACF;;AAED,SAAS,UAAU,CAAC,IAAI;;;;AAIxB;EACE,OAAO,OAAO,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC;CACnG;;AAED,SAAS,KAAK,CAAC,GAAG;;;;AAIlB;EACE,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC/C;;AAED,SAAS,GAAG,CAAC,CAAC;;;;AAId;EACE,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACxB;;AAED,SAAS,SAAS,CAAC,KAAK;;EAEtB,QAAQ;;EAER,aAAa;;EAEb;EACA,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,wCAAwC,CAAC,CAAC,CAAC;GACjH;;;;;;;;;;;ACzDH;AAEA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE;EAC3C,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AACH,iBAAiB,GAAG,SAAS,CAAC;AAC9B,0BAA0B,GAAG,kBAAkB,CAAC;AAChD,4BAA4B,GAAG,oBAAoB,CAAC;AACpD,eAAe,GAAG,KAAK,CAAC,CAAC;AACzB,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;AAE9C,SAAS,SAAS,CAAC,IAAI;;EAErB,WAAW;;AAEb;;;;EAIE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE,OAAO,EAAE,CAAC;EACvF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC;EACpD,IAAI,IAAI,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;;EAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACxC,IAAI,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;GACxE;;EAED,OAAO,EAAE,CAAC;CACX;;AAED,SAAS,kBAAkB,CAAC,IAAI;;EAE9B,MAAM;;;;AAIR;EACE,OAAO,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC7D;;AAED,SAAS,oBAAoB,CAAC,IAAI;;EAEhC,MAAM;;;;AAIR;EACE,OAAO,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;CAC3D;;AAED,SAAS,gBAAgB,CAAC,GAAG;;;;AAI7B;EACE,IAAI,GAAG,GAAG,EAAE,CAAC;EACb,IAAI,gBAAgB,GAAG,IAAI,CAAC;;EAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACnC,IAAI,gBAAgB,EAAE;MACpB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;MAC5B,gBAAgB,GAAG,KAAK,CAAC;KAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACzB,gBAAgB,GAAG,IAAI,CAAC;KACzB,MAAM;MACL,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;KACf;GACF;;EAED,OAAO,GAAG,CAAC;CACZ;;;;;AAKD,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;;AAE3B,eAAe,GAAG,QAAQ;;;;;;;;;AC7E1B;AAEA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE;EAC3C,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AACH,uBAAuB,GAAG,eAAe,CAAC;AAC1C,mCAAmC,GAAG,2BAA2B,CAAC;AAClE,gBAAgB,GAAG,QAAQ,CAAC;AAC5B,mBAAmB,GAAG,WAAW,CAAC;AAClC,mBAAmB,GAAG,WAAW,CAAC;AAClC,kBAAkB,GAAG,UAAU,CAAC;AAChC,mBAAmB,GAAG,WAAW,CAAC;AAClC,kBAAkB,GAAG,UAAU,CAAC;AAChC,0BAA0B,GAAG,kBAAkB,CAAC;AAChD,0BAA0B,GAAG,kBAAkB,CAAC;AAChD,0BAA0B,GAAG,kBAAkB,CAAC;AAChD,sBAAsB,GAAG,cAAc,CAAC;AACxC,gBAAgB,GAAG,QAAQ,CAAC;AAC5B,0BAA0B,GAAG,kBAAkB,CAAC;AAChD,2BAA2B,GAAG,mBAAmB,CAAC;AAClD,8BAA8B,GAAG,sBAAsB,CAAC;AACxD,kBAAkB,GAAG,UAAU,CAAC;AAChC,oBAAoB,GAAG,YAAY,CAAC;AACpC,uBAAuB,GAAG,eAAe,CAAC;;;;AAI1C,IAAI,UAAU,GAAG,uBAAuB,CAACA,WAAsB,CAAC,CAAC;;AAEjE,SAAS,uBAAuB,CAAC,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,EAAE,EAAE;;AAExd,IAAI,mBAAmB,GAAG,EAAE,CAAC;;AAE7B,SAAS,eAAe,CAAC,EAAE;;EAEzB,QAAQ;;;;AAIV;EACE,IAAI,CAAC,mBAAmB,EAAE;IACxB,mBAAmB,GAAG,CAAC,GAAGwC,KAAM,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,EAAE,UAAU,MAAM,EAAE;;MAEnK,OAAO,CAAC,GAAGA,KAAM,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;KAC3C,CAAC,CAAC;GACJ;;;;EAID,IAAI,CAAC,CAAC,GAAGA,KAAM,CAAC,UAAU,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC;;EAEnE,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC;CAC1C;;;AAGD,SAAS,2BAA2B,CAAC,EAAE;;EAErC,QAAQ;;EAER,QAAQ;;;;AAIV;EACE,IAAI,IAAI,GAAG,EAAE,CAAC;;EAEd,GAAG;IACD,IAAI,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAO,IAAI,CAAC;IACjD,IAAI,IAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,CAAC;IACpC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;GACxB,QAAQ,IAAI,EAAE;;EAEf,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,QAAQ,CAAC,EAAE;;EAElB,KAAK;;EAEL,OAAO;;;;AAIT;EACE,IAAI,CAAC,EAAE,EAAE;IACP,OAAO;GACR;;EAED,IAAI,EAAE,CAAC,WAAW,EAAE;IAClB,EAAE,CAAC,WAAW,CAAC,IAAI,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC;GACvC,MAAM,IAAI,EAAE,CAAC,gBAAgB,EAAE;IAC9B,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;GAC3C,MAAM;;IAEL,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC;GAC5B;CACF;;AAED,SAAS,WAAW,CAAC,EAAE;;EAErB,KAAK;;EAEL,OAAO;;;;AAIT;EACE,IAAI,CAAC,EAAE,EAAE;IACP,OAAO;GACR;;EAED,IAAI,EAAE,CAAC,WAAW,EAAE;IAClB,EAAE,CAAC,WAAW,CAAC,IAAI,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC;GACvC,MAAM,IAAI,EAAE,CAAC,mBAAmB,EAAE;IACjC,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;GAC9C,MAAM;;IAEL,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;GACzB;CACF;;AAED,SAAS,WAAW,CAAC,IAAI;;;;AAIzB;;;EAGE,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;EAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;EAC5E,MAAM,IAAI,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;EACxD,MAAM,IAAI,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;EAC3D,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,UAAU,CAAC,IAAI;;;;AAIxB;;;EAGE,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;EAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;EAC5E,KAAK,IAAI,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;EACxD,KAAK,IAAI,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;EACzD,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,WAAW,CAAC,IAAI;;;;AAIzB;EACE,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;EAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;EAC5E,MAAM,IAAI,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;EACpD,MAAM,IAAI,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;EACvD,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,UAAU,CAAC,IAAI;;;;AAIxB;EACE,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;EAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;EAC5E,KAAK,IAAI,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;EACpD,KAAK,IAAI,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;EACrD,OAAO,KAAK,CAAC;CACd;;;AAGD,SAAS,kBAAkB,CAAC,GAAG;;EAE7B,YAAY;;;;AAId;EACE,MAAM,MAAM,GAAG,YAAY,KAAK,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC;EAChE,MAAM,gBAAgB,GAAG,MAAM,GAAG;IAChC,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;GACP,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;EACzC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC;EACxE,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC;EACtE,OAAO;IACL,CAAC;IACD,CAAC;GACF,CAAC;CACH;;AAED,SAAS,kBAAkB,CAAC,UAAU;;EAEpC,cAAc;;;;AAIhB;EACE,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;EACrE,OAAO;IACL,CAAC,CAAC,GAAG,UAAU,CAAC,kBAAkB,EAAE,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,WAAW;GACnF,CAAC;CACH;;AAED,SAAS,kBAAkB,CAAC,UAAU;;EAEpC,cAAc;;;;AAIhB;EACE,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;EACnE,OAAO,WAAW,CAAC;CACpB;;AAED,SAAS,cAAc,CAAC;EACtB,CAAC;EACD,CAAC;CACF;;EAEC,cAAc;;EAEd,UAAU;;;;AAIZ;EACE,IAAI,WAAW,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;;EAEnE,IAAI,cAAc,EAAE;IAClB,MAAM,QAAQ,GAAG,CAAC,EAAE,OAAO,cAAc,CAAC,CAAC,KAAK,QAAQ,GAAG,cAAc,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAC9G,MAAM,QAAQ,GAAG,CAAC,EAAE,OAAO,cAAc,CAAC,CAAC,KAAK,QAAQ,GAAG,cAAc,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAC9G,WAAW,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;GACnE;;EAED,OAAO,WAAW,CAAC;CACpB;;AAED,SAAS,QAAQ,CAAC,CAAC;;EAEjB,UAAU;;;;AAIZ;EACE,OAAO,CAAC,CAAC,aAAa,IAAI,CAAC,GAAGA,KAAM,CAAC,WAAW,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,GAAGA,KAAM,CAAC,WAAW,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,IAAI,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;CACzM;;AAED,SAAS,kBAAkB,CAAC,CAAC;;;;AAI7B;EACE,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;EAChF,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;CACpF;;;;;;AAMD,SAAS,mBAAmB,CAAC,GAAG;;EAE9B;EACA,IAAI,CAAC,GAAG,EAAE,OAAO;EACjB,IAAI,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC;;EAE7D,IAAI,CAAC,OAAO,EAAE;IACZ,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;IAC1B,OAAO,CAAC,EAAE,GAAG,0BAA0B,CAAC;IACxC,OAAO,CAAC,SAAS,GAAG,4EAA4E,CAAC;IACjG,OAAO,CAAC,SAAS,IAAI,uEAAuE,CAAC;IAC7F,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;GAC1D;;EAED,IAAI,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAC;CAC/E;;AAED,SAAS,sBAAsB,CAAC,GAAG;;EAEjC;EACA,IAAI;IACF,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAC;;IAExF,IAAI,GAAG,CAAC,SAAS,EAAE;;MAEjB,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KACvB,MAAM;MACL,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,EAAE,CAAC;KACzC;GACF,CAAC,OAAO,CAAC,EAAE;GACX;CACF;;AAED,SAAS,UAAU,CAAC,UAAU;;EAE5B,EAAE;;AAEJ;;;EAGE,OAAO;IACL,WAAW,EAAE,MAAM;IACnB,GAAG,UAAU;GACd,CAAC;CACH;;AAED,SAAS,YAAY,CAAC,EAAE;;EAEtB,SAAS;;EAET;EACA,IAAI,EAAE,CAAC,SAAS,EAAE;IAChB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;GAC7B,MAAM;IACL,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;MACnE,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;KACjC;GACF;CACF;;AAED,SAAS,eAAe,CAAC,EAAE;;EAEzB,SAAS;;EAET;EACA,IAAI,EAAE,CAAC,SAAS,EAAE;IAChB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;GAChC,MAAM;IACL,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;GAC1F;;;;;;;;;;;;;;;;;;;;;;;;;;AC9UH;AAEA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE;EAC3C,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AACH,wBAAwB,GAAG,gBAAgB,CAAC;AAC5C,kBAAkB,GAAG,UAAU,CAAC;AAChC,gBAAgB,GAAG,QAAQ,CAAC;AAC5B,gBAAgB,GAAG,QAAQ,CAAC;AAC5B,0BAA0B,GAAG,kBAAkB,CAAC;AAChD,sBAAsB,GAAG,cAAc,CAAC;AACxC,2BAA2B,GAAG,mBAAmB,CAAC;;;;AAIlD,IAAI,SAAS,GAAG,sBAAsB,CAACxC,QAAoB,CAAC,CAAC;;;;AAI7D,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;;AAE/F,SAAS,gBAAgB,CAAC,SAAS;;EAEjC,CAAC;;EAED,CAAC;;;;AAIH;;EAEE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;EAE3C,IAAI;IACF,MAAM;GACP,GAAG,SAAS,CAAC,KAAK,CAAC;EACpB,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;EACnE,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;;EAEpC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;IAC9B,MAAM;MACJ,aAAa;KACd,GAAG,IAAI,CAAC;IACT,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;IAC9C,IAAI,SAAS,CAAC;;IAEd,IAAI,MAAM,KAAK,QAAQ,EAAE;MACvB,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;KAC7B,MAAM;MACL,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;KACjD;;IAED,IAAI,EAAE,SAAS,YAAY,WAAW,CAAC,WAAW,CAAC,EAAE;MACnD,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,MAAM,GAAG,8BAA8B,CAAC,CAAC;KAChF;;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;;IAE/D,MAAM,GAAG;MACP,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAGwC,KAAM,CAAC,GAAG,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC;MAC5G,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC;MACxG,KAAK,EAAE,CAAC,GAAGC,MAAO,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,GAAGA,MAAO,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,GAAGD,KAAM,CAAC,GAAG,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,CAAC;MACnL,MAAM,EAAE,CAAC,GAAGC,MAAO,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,GAAGA,MAAO,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,GAAGD,KAAM,CAAC,GAAG,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,GAAGA,KAAM,CAAC,GAAG,EAAE,SAAS,CAAC,YAAY,CAAC;KACxL,CAAC;GACH;;;EAGD,IAAI,CAAC,GAAGA,KAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;EACnE,IAAI,CAAC,GAAGA,KAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;;EAErE,IAAI,CAAC,GAAGA,KAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;EACjE,IAAI,CAAC,GAAGA,KAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;EAC/D,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACf;;AAED,SAAS,UAAU,CAAC,IAAI;;EAEtB,QAAQ;;EAER,QAAQ;;;;AAIV;EACE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACnD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACnD,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACf;;AAED,SAAS,QAAQ,CAAC,SAAS;;;;AAI3B;EACE,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;CACxE;;AAED,SAAS,QAAQ,CAAC,SAAS;;;;AAI3B;EACE,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;CACxE;;;AAGD,SAAS,kBAAkB,CAAC,CAAC;;EAE3B,eAAe;;EAEf,aAAa;;;;AAIf;EACE,MAAM,QAAQ,GAAG,OAAO,eAAe,KAAK,QAAQ,GAAG,CAAC,GAAGC,MAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC;EACxG,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC;;EAElE,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;;EAExC,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;EACtG,OAAO,CAAC,GAAGA,MAAO,CAAC,kBAAkB,EAAE,QAAQ,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;CACrE;;;AAGD,SAAS,cAAc,CAAC,SAAS;;EAE/B,CAAC;;EAED,CAAC;;;;AAIH;EACE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;EAC9B,MAAM,OAAO,GAAG,CAAC,CAAC,GAAGD,KAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;EAChD,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;;EAEpC,IAAI,OAAO,EAAE;;IAEX,OAAO;MACL,IAAI;MACJ,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,CAAC;MACR,KAAK,EAAE,CAAC;MACR,CAAC;MACD,CAAC;KACF,CAAC;GACH,MAAM;;IAEL,OAAO;MACL,IAAI;MACJ,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK;MACvB,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK;MACvB,KAAK,EAAE,KAAK,CAAC,KAAK;MAClB,KAAK,EAAE,KAAK,CAAC,KAAK;MAClB,CAAC;MACD,CAAC;KACF,CAAC;GACH;CACF;;;AAGD,SAAS,mBAAmB,CAAC,SAAS;;EAEpC,QAAQ;;;;AAIV;EACE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;EACpC,OAAO;IACL,IAAI,EAAE,QAAQ,CAAC,IAAI;IACnB,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK;IAC9C,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK;IAC9C,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,KAAK;IAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,KAAK;IAC/B,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;GACzB,CAAC;CACH;;;AAGD,SAAS,WAAW,CAAC,MAAM;;;;AAI3B;EACE,OAAO;IACL,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,GAAG,EAAE,MAAM,CAAC,GAAG;IACf,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;GACtB,CAAC;CACH;;AAED,SAAS,WAAW,CAAC,SAAS;;;;AAI9B;EACE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;;EAEtD,IAAI,CAAC,IAAI,EAAE;IACT,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;GAC7D;;;EAGD,OAAO,IAAI,CAAC;;;;;;;;;;;;;;AClNd;AAEA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE;EAC3C,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AACH,eAAe,GAAG,GAAG,CAAC;;;AAGtB,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE;EACpB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;;;;;;;ACTxD;AAEA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE;EAC3C,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AACH,eAAe,GAAG,KAAK,CAAC,CAAC;;AAEzB,IAAI,MAAM,GAAG,sBAAsB,CAACxC,cAAgB,CAAC,CAAC;;AAEtD,IAAI,UAAU,GAAG,sBAAsB,CAAC0C,SAAqB,CAAC,CAAC;;AAE/D,IAAI,SAAS,GAAG,sBAAsB,CAACC,QAAoB,CAAC,CAAC;;;;;;;;AAQ7D,IAAI,IAAI,GAAG,sBAAsB,CAACC,KAAsB,CAAC,CAAC;;AAE1D,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;;AAE/F,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,EAAE;;;AAGjN,MAAM,SAAS,GAAG;EAChB,KAAK,EAAE;IACL,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,UAAU;GACjB;EACD,KAAK,EAAE;IACL,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,SAAS;GAChB;CACF,CAAC;;AAEF,IAAI,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDnC,MAAM,aAAa,SAAS,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;EACnD,WAAW,CAAC,GAAG,IAAI,EAAE;IACnB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;;IAEf,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE;MAC7B,QAAQ,EAAE,KAAK;;MAEf,KAAK,EAAE,GAAG;MACV,KAAK,EAAE,GAAG;MACV,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;;IAEH,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,IAAI;;MAE5C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;;MAE1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;;MAE9F,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;MAErD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE;QACxE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;OAC9D;;MAED,MAAM;QACJ,aAAa;OACd,GAAG,QAAQ,CAAC;;MAEb,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,YAAY,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAGH,MAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAGA,MAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QACjS,OAAO;OACR;;;;;MAKD,MAAM,eAAe,GAAG,CAAC,GAAGA,MAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;MAC3D,IAAI,CAAC,QAAQ,CAAC;QACZ,eAAe;OAChB,CAAC,CAAC;;MAEH,MAAM,QAAQ,GAAG,CAAC,GAAGI,WAAY,CAAC,kBAAkB,EAAE,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;MAChF,IAAI,QAAQ,IAAI,IAAI,EAAE,OAAO;;MAE7B,MAAM;QACJ,CAAC;QACD,CAAC;OACF,GAAG,QAAQ,CAAC;;MAEb,MAAM,SAAS,GAAG,CAAC,GAAGA,WAAY,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC/D,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,oCAAoC,EAAE,SAAS,CAAC,CAAC;;MAEnE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;MACjD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;MACtD,IAAI,YAAY,KAAK,KAAK,EAAE,OAAO;;;MAGnC,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,GAAGJ,MAAO,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;;;;MAIrF,IAAI,CAAC,QAAQ,CAAC;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;OACT,CAAC,CAAC;;;;MAIH,CAAC,GAAGA,MAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;MACzE,CAAC,GAAGA,MAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KAC9E,CAAC,CAAC;;IAEH,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,IAAI;;MAEvC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;;MAE/C,MAAM,QAAQ,GAAG,CAAC,GAAGI,WAAY,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;MAC3F,IAAI,QAAQ,IAAI,IAAI,EAAE,OAAO;MAC7B,IAAI;QACF,CAAC;QACD,CAAC;OACF,GAAG,QAAQ,CAAC;;MAEb,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAClC,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;YAC7B,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAClC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAGA,WAAY,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO;;QAE/B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;OAC9D;;MAED,MAAM,SAAS,GAAG,CAAC,GAAGA,WAAY,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC/D,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,+BAA+B,EAAE,SAAS,CAAC,CAAC;;MAE9D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;;MAErD,IAAI,YAAY,KAAK,KAAK,EAAE;QAC1B,IAAI;;UAEF,IAAI,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;SAChD,CAAC,OAAO,GAAG,EAAE;;UAEZ,MAAM,KAAK,KAAK,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC;;;;WAIlD,CAAC;;;UAGF,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;UACxG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC5B;;QAED,OAAO;OACR;;MAED,IAAI,CAAC,QAAQ,CAAC;QACZ,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;OACT,CAAC,CAAC;KACJ,CAAC,CAAC;;IAEH,eAAe,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC,IAAI;MAC3C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO;MACjC,MAAM,QAAQ,GAAG,CAAC,GAAGA,WAAY,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;MAC3F,IAAI,QAAQ,IAAI,IAAI,EAAE,OAAO;MAC7B,MAAM;QACJ,CAAC;QACD,CAAC;OACF,GAAG,QAAQ,CAAC;MACb,MAAM,SAAS,GAAG,CAAC,GAAGA,WAAY,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;MAE/D,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;MAErD,IAAI,QAAQ,EAAE;;QAEZ,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,GAAGJ,MAAO,CAAC,sBAAsB,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;OAClG;;MAED,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,mCAAmC,EAAE,SAAS,CAAC,CAAC;;MAElE,IAAI,CAAC,QAAQ,CAAC;QACZ,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;OACX,CAAC,CAAC;;MAEH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;;MAEhC,IAAI,QAAQ,EAAE;;QAEZ,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;QACtD,CAAC,GAAGA,MAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACrF,CAAC,GAAGA,MAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;OAC1F;KACF,CAAC,CAAC;;IAEH,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,IAAI;MACxC,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;;MAE/B,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;KAChC,CAAC,CAAC;;IAEH,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,IAAI;MACtC,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;MAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KAC/B,CAAC,CAAC;;IAEH,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,IAAI;;MAEzC,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;MAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;KAChC,CAAC,CAAC;;IAEH,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,IAAI;;MAEvC,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;MAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KAC/B,CAAC,CAAC;GACJ;;EAED,oBAAoB,GAAG;;;IAGrB,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;IAErD,IAAI,QAAQ,EAAE;MACZ,MAAM;QACJ,aAAa;OACd,GAAG,QAAQ,CAAC;MACb,CAAC,GAAGA,MAAO,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;MAC/E,CAAC,GAAGA,MAAO,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;MAC/E,CAAC,GAAGA,MAAO,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;MACnF,CAAC,GAAGA,MAAO,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;MACnF,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,GAAGA,MAAO,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;KACzF;GACF;;EAED,MAAM,GAAG;;;IAGP,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;MACpF,KAAK,EAAE,CAAC,GAAGA,MAAO,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;;;MAG/D,WAAW,EAAE,IAAI,CAAC,WAAW;MAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;MAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;MACzB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;GACJ;;CAEF;;AAED,eAAe,GAAG,aAAa,CAAC;;AAEhC,eAAe,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;;AAE/D,eAAe,CAAC,aAAa,EAAE,WAAW,EAAE;;;;;;;EAO1C,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI;;;;;;EAMtC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI;;;;;;;EAOjC,oBAAoB,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI;;;;;;EAM7C,YAAY,EAAE,UAAU,KAAK;;IAE3B,QAAQ;;IAER;IACA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;MACrD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;KAClE;GACF;;;;;EAKD,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;EAsB3D,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;EAsBjC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;;;;;;EAMjC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI;;;;;;EAMhC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI;;;;;;EAM/B,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI;;;;;;EAM/B,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI;;;;;EAKpC,SAAS,EAAED,KAAM,CAAC,SAAS;EAC3B,KAAK,EAAEA,KAAM,CAAC,SAAS;EACvB,SAAS,EAAEA,KAAM,CAAC,SAAS;CAC5B,CAAC,CAAC;;AAEH,eAAe,CAAC,aAAa,EAAE,cAAc,EAAE;EAC7C,aAAa,EAAE,KAAK;;EAEpB,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,KAAK;EACf,oBAAoB,EAAE,IAAI;EAC1B,YAAY,EAAE,IAAI;EAClB,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,IAAI;EACV,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,YAAY,EAAE;EACvB,MAAM,EAAE,YAAY,EAAE;EACtB,MAAM,EAAE,YAAY,EAAE;EACtB,WAAW,EAAE,YAAY,EAAE;CAC5B,CAAC;;;;;;ACtbF;AAEA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE;EAC3C,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AACH,eAAe,GAAG,KAAK,CAAC,CAAC;;AAEzB,IAAI,MAAM,GAAG,sBAAsB,CAACxC,cAAgB,CAAC,CAAC;;AAEtD,IAAI,UAAU,GAAG,sBAAsB,CAAC0C,SAAqB,CAAC,CAAC;;AAE/D,IAAI,SAAS,GAAG,sBAAsB,CAACC,QAAoB,CAAC,CAAC;;AAE7D,IAAI,WAAW,GAAG,sBAAsB,CAACC,UAAqB,CAAC,CAAC;;;;;;;;AAQhE,IAAI,cAAc,GAAG,sBAAsB,CAACE,eAA0B,CAAC,CAAC;;AAExE,IAAI,IAAI,GAAG,sBAAsB,CAACC,KAAsB,CAAC,CAAC;;AAE1D,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;;AAE/F,SAAS,QAAQ,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;;AAE7T,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,EAAE;;;;;AAKjN,MAAM,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;;;EAG/C,OAAO,wBAAwB,CAAC;IAC9B,QAAQ;GACT;;IAEC;IACA,iBAAiB;GAClB;;IAEC;;IAEA,IAAI,QAAQ,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC,CAAC,EAAE;MAChH,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,wCAAwC,EAAE;QAC1D,QAAQ;QACR,iBAAiB;OAClB,CAAC,CAAC;MACH,OAAO;QACL,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,iBAAiB,EAAE,EAAE,GAAG,QAAQ;SAC/B;OACF,CAAC;KACH;;IAED,OAAO,IAAI,CAAC;GACb;;EAED,WAAW,CAAC,KAAK;;IAEf;IACA,KAAK,CAAC,KAAK,CAAC,CAAC;;IAEb,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK;MACpD,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,4BAA4B,EAAE,QAAQ,CAAC,CAAC;;MAE1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAGF,WAAY,CAAC,mBAAmB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;;MAEjG,IAAI,WAAW,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC;MACxC,IAAI,CAAC,QAAQ,CAAC;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;OACd,CAAC,CAAC;KACJ,CAAC,CAAC;;IAEH,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK;MAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,KAAK,CAAC;MACvC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,uBAAuB,EAAE,QAAQ,CAAC,CAAC;MACrD,MAAM,MAAM,GAAG,CAAC,GAAGA,WAAY,CAAC,mBAAmB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;MACrE,MAAM,QAAQ;;QAEZ;QACA,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;OACZ,CAAC;;MAEF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;;QAErB,MAAM;UACJ,CAAC;UACD,CAAC;SACF,GAAG,QAAQ,CAAC;;;;QAIb,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;;QAEhC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,GAAGA,WAAY,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChG,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC;QACvB,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC;;QAEvB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvD,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;;QAEvD,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;OAC3C;;;MAGD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;MAClD,IAAI,YAAY,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC;MACzC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KACzB,CAAC,CAAC;;IAEH,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK;MACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,KAAK,CAAC;;MAEvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAGA,WAAY,CAAC,mBAAmB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;MAC/F,IAAI,UAAU,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC;MACvC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,2BAA2B,EAAE,QAAQ,CAAC,CAAC;MACzD,MAAM,QAAQ;;QAEZ;QACA,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;OACV,CAAC;;;MAGF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;MAEhD,IAAI,UAAU,EAAE;QACd,MAAM;UACJ,CAAC;UACD,CAAC;SACF,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACxB,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;QACf,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;OAChB;;MAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KACzB,CAAC,CAAC;;IAEH,IAAI,CAAC,KAAK,GAAG;;MAEX,QAAQ,EAAE,KAAK;;MAEf,OAAO,EAAE,KAAK;;MAEd,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;MAC9D,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;MAC9D,iBAAiB,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ;OACrC;;MAED,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,CAAC;;MAET,YAAY,EAAE,KAAK;KACpB,CAAC;;IAEF,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;;MAErD,OAAO,CAAC,IAAI,CAAC,2FAA2F,GAAG,uGAAuG,GAAG,6BAA6B,CAAC,CAAC;KACrP;GACF;;EAED,iBAAiB,GAAG;;IAElB,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,WAAW,IAAI,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,UAAU,EAAE;MAChH,IAAI,CAAC,QAAQ,CAAC;QACZ,YAAY,EAAE,IAAI;OACnB,CAAC,CAAC;KACJ;GACF;;EAED,oBAAoB,GAAG;IACrB,IAAI,CAAC,QAAQ,CAAC;MACZ,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;GACJ;;EAED,MAAM;;EAEN;IACE,MAAM;MACJ,IAAI;MACJ,MAAM;MACN,QAAQ;MACR,eAAe;MACf,gBAAgB;MAChB,wBAAwB;MACxB,uBAAuB;MACvB,QAAQ;MACR,cAAc;MACd,KAAK;MACL,GAAG,kBAAkB;KACtB,GAAG,IAAI,CAAC,KAAK,CAAC;IACf,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,YAAY,GAAG,IAAI,CAAC;;IAExB,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IACrD,MAAM,aAAa,GAAG,QAAQ,IAAI,eAAe,CAAC;IAClD,MAAM,aAAa,GAAG;;MAEpB,CAAC,EAAE,CAAC,GAAGA,WAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;;MAEjF,CAAC,EAAE,CAAC,GAAGA,WAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;KAClF,CAAC;;IAEF,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;MAC3B,YAAY,GAAG,CAAC,GAAGJ,MAAO,CAAC,kBAAkB,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;KAC/E,MAAM;;;;;MAKL,KAAK,GAAG,CAAC,GAAGA,MAAO,CAAC,kBAAkB,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;KACxE;;;IAGD,MAAM,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,gBAAgB,EAAE;MAC3F,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;MAC/C,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO;KAC9C,CAAC,CAAC;;;IAGH,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,kBAAkB,EAAE;MAC3F,OAAO,EAAE,IAAI,CAAC,WAAW;MACzB,MAAM,EAAE,IAAI,CAAC,MAAM;MACnB,MAAM,EAAE,IAAI,CAAC,UAAU;KACxB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;MACtE,SAAS,EAAE,SAAS;MACpB,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK;QAC9B,GAAG,KAAK;OACT;MACD,SAAS,EAAE,YAAY;KACxB,CAAC,CAAC,CAAC;GACL;;CAEF;;AAED,eAAe,GAAG,SAAS,CAAC;;AAE5B,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;;AAEvD,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE;EACtC,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS;;;;;;;;;;;;;;;EAenC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B1D,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7D,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;IAC/B,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;IAChC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;IAC9B,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;GAClC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAClE,gBAAgB,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;EAC3C,wBAAwB,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;EACnD,uBAAuB,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;;;;;;;;;;;;;;;;;;;EAmBlD,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;IAC5B,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;GAC7B,CAAC;EACF,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;IACvC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvF,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;GACxF,CAAC;;;;;;;;;;;;;;;;;;;;;;EAsBF,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;IACjC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;IAC5B,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;GAC7B,CAAC;;;;;EAKF,SAAS,EAAED,KAAM,CAAC,SAAS;EAC3B,KAAK,EAAEA,KAAM,CAAC,SAAS;EACvB,SAAS,EAAEA,KAAM,CAAC,SAAS;CAC5B,CAAC,CAAC;;AAEH,eAAe,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY;EACjF,IAAI,EAAE,MAAM;EACZ,MAAM,EAAE,KAAK;EACb,gBAAgB,EAAE,iBAAiB;EACnC,wBAAwB,EAAE,0BAA0B;EACpD,uBAAuB,EAAE,yBAAyB;EAClD,eAAe,EAAE;IACf,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;GACL;EACD,QAAQ,EAAE,IAAI;EACd,KAAK,EAAE,CAAC;CACT,CAAC;;;;;AC3XF,IAAI,SAAS,GAAGxC,WAA4B,CAAC,OAAO,CAAC;;;;;;AAMrD,kBAAc,GAAG,SAAS,CAAC;AAC3B,aAAsB,GAAG,SAAS,CAAC;AACnC,iBAA4B,GAAG0C,eAAgC,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRxE,AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,IAAI,WAAW,GAAG,UAAU,MAAM,EAAE;IAChC,IAAI,SAAS,IAAI,MAAM,EAAE;QACrB,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,GAAG,CAAC,KAAK;SACnB,CAAC,CAAC;KACN;SACI;QACD,IAAI,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;YACxC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;YAC3C,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;YACzC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;SACzC,CAAC,CAAC;KACN;CACJ,CAAC;AACF,mBAAmB,GAAG,WAAW,CAAC;;;;;;;;ACtBlC,AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;AAE9D,IAAI,iBAAiB,kBAAkB,YAAY;IAC/C,SAAS,iBAAiB,CAAC,MAAM,EAAE;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;KACtD;IACD,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,EAAE;QACjE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAChC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,EAAE;QAClE,GAAG,EAAE,YAAY;YACb,OAAO,IAAI,CAAC,iBAAiB,CAAC;SACjC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;QAC/C,IAAI,EAAE,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,CAAC,CAAC,EAAE;gBACH,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc;mBAC7B,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC;KAClD,CAAC;IACF,OAAO,iBAAiB,CAAC;CAC5B,EAAE,CAAC,CAAC;AACL,yBAAyB,GAAG,iBAAiB,CAAC;;;;;;;;AC9B9C,AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;AAE9D,IAAI,mBAAmB,kBAAkB,YAAY;IACjD,SAAS,mBAAmB,CAAC,MAAM,EAAE;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KACxD;IACD,OAAO,mBAAmB,CAAC;CAC9B,EAAE,CAAC,CAAC;AACL,2BAA2B,GAAG,mBAAmB,CAAC;;;;;;;;ACVlD,AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;;AAG9D,IAAI,eAAe,GAAG,EAAE,CAAC;AACzB,IAAI,cAAc,kBAAkB,YAAY;IAC5C,SAAS,cAAc,CAAC,QAAQ,EAAE;;QAE9B,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;;QAE/B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;;QAE1B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,OAAO,EAAE;YACT,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;SAC5B;QACD,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC3B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IACD,cAAc,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,MAAM,EAAE;QACjD,IAAI,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,OAAO,EAAE;YACT,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;SAC5B;QACD,IAAI,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAC/D,IAAI,KAAK,GAAG,CAAC,EAAE;YACX,OAAO;SACV;QACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;QAClF,SAAS,EAAE,CAAC;KACf,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,MAAM,EAAE;QACnD,IAAI,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE;YACT,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;SAC5B;QACD,IAAI,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAC/D,IAAI,KAAK,GAAG,CAAC,EAAE;YACX,OAAO;SACV;QACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3C,aAAa,EAAE,CAAC;KACnB,CAAC;IACF,cAAc,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY;QAC9C,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;KAC7B,CAAC;IACF,OAAO,cAAc,CAAC;CACzB,EAAE,CAAC,CAAC;AACL,sBAAsB,GAAG,cAAc,CAAC;AACxC,SAAS,aAAa,CAAC,QAAQ,EAAE;IAC7B,IAAI,QAAQ,QAAQ,CAAC,KAAK,WAAW,EAAE;QACnC,OAAO,gFAAgF,CAAC;KAC3F;IACD,IAAI,QAAQ,QAAQ,CAAC,KAAK,UAAU,EAAE;QAClC,OAAO,+FAA+F,CAAC;KAC1G;CACJ;AACD,SAAS,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE;IACvC,IAAI,QAAQ,MAAM,CAAC,KAAK,WAAW,EAAE;QACjC,OAAO,qBAAqB,GAAG,YAAY,GAAG,iEAAiE,CAAC;KACnH;IACD,IAAI,EAAE,MAAM,YAAY,MAAM,CAAC,OAAO,CAAC,EAAE;QACrC,OAAO,qBAAqB,GAAG,YAAY,GAAG,8DAA8D,CAAC;KAChH;CACJ;AACD,SAAS,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE;IACzC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;QACvD,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE;YACrC,OAAO,KAAK,CAAC;SAChB;KACJ;IACD,OAAO,CAAC,CAAC,CAAC;CACb;AACD,IAAI,+BAA+B,GAAG,UAAU,KAAK,EAAE;IACnD,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE;QAClC,EAAE,CAAC,eAAe,GAAG,EAAE,CAAC;QACxB,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC;QACzB,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE;YAC1C,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACf,IAAI,WAAW,GAAG,qBAAqB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,WAAW,GAAG,KAAK,EAAE;oBACrB,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAC/B;qBACI;oBACD,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAChC;aACJ;SACJ,CAAC,CAAC;KACN,CAAC,CAAC;CACN,CAAC;AACF,IAAI,qBAAqB,GAAG,YAAY;IACpC,OAAO,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACtF,CAAC;AACF,IAAI,sBAAsB,GAAG,YAAY;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACvF,CAAC;AACF,IAAI,2BAA2B,GAAG,YAAY;IAC1C,IAAI,qBAAqB,GAAG,QAAQ,CAAC;IACrC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE;QAClC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE;YAC5B,OAAO;SACV;QACD,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;YACtC,IAAI,KAAK,GAAG,IAAI,qBAAqB,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;YAC/C,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;YACjD,IAAI,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,WAAW,GAAG,qBAAqB,EAAE;gBACrC,qBAAqB,GAAG,WAAW,CAAC;aACvC;SACJ,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3B,EAAE,CAAC,eAAe,GAAG,EAAE,CAAC;KAC3B,CAAC,CAAC;IACH,OAAO,qBAAqB,CAAC;CAChC,CAAC;AACF,IAAI,kCAAkC,GAAG,YAAY;IACjD,IAAI,UAAU,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE;QACtD,OAAO,EAAE,+DAA+D;KAC3E,CAAC,CAAC;IACH,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;CACpC,CAAC;AACF,IAAI,qBAAqB,GAAG,UAAU,MAAM,EAAE;IAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,MAAM,CAAC,UAAU,EAAE;QACtB,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAC3B,KAAK,IAAI,CAAC,CAAC;KACd;IACD,OAAO,KAAK,CAAC;CAChB,CAAC;AACF,IAAI,qBAAqB,GAAG,YAAY;IACpC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,qBAAqB,EAAE,EAAE;QAC5B,KAAK,GAAG,2BAA2B,EAAE,CAAC;QACtC,+BAA+B,CAAC,KAAK,CAAC,CAAC;KAC1C;IACD,IAAI,sBAAsB,EAAE,EAAE;QAC1B,kCAAkC,EAAE,CAAC;KACxC;CACJ,CAAC;AACF,IAAI,yBAAyB,CAAC;AAC9B,IAAI,SAAS,GAAG,YAAY;IACxB,IAAI,yBAAyB;QACzB,OAAO;IACX,OAAO,EAAE,CAAC;CACb,CAAC;AACF,IAAI,OAAO,GAAG,YAAY;IACtB,yBAAyB,GAAG,MAAM,CAAC,qBAAqB,CAAC,YAAY;QACjE,qBAAqB,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;KACb,CAAC,CAAC;CACN,CAAC;AACF,IAAI,aAAa,GAAG,YAAY;IAC5B,IAAI,yBAAyB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QAChH,MAAM,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;QACvD,yBAAyB,GAAG,SAAS,CAAC;KACzC;CACJ,CAAC;AACF,IAAI,OAAO,GAAG,YAAY;IACtB,OAAO,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;CACjD,CAAC;AACF,eAAe,GAAG,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtK1B,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;EAC7B,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;EAC/B,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;;EAE5B,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;;EAExD,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACrE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;EAC5C,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;;EAExB,IAAI,QAAQ,KAAK,KAAK,EAAE;IACtB,IAAI,IAAI,CAAC,UAAU,EAAE;MACnB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3C,MAAM;MACL,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACzB;GACF,MAAM;IACL,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;GACzB;;EAED,IAAI,KAAK,CAAC,UAAU,EAAE;IACpB,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;GAChC,MAAM;IACL,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;GACjD;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/example/package-lock.json b/example/package-lock.json index 6b1bf136c..5794c06b3 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -2717,7 +2717,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2735,11 +2736,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2752,15 +2755,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2863,7 +2869,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2873,6 +2880,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2885,17 +2893,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2912,6 +2923,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2984,7 +2996,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2994,6 +3007,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3069,7 +3083,8 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3099,6 +3114,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3116,6 +3132,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3154,11 +3171,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true + "bundled": true, + "optional": true } } }, @@ -6878,7 +6897,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -6896,11 +6916,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6913,15 +6935,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -7024,7 +7049,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -7034,6 +7060,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -7046,17 +7073,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -7073,6 +7103,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -7145,7 +7176,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -7155,6 +7187,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -7230,7 +7263,8 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -7260,6 +7294,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -7277,6 +7312,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -7315,11 +7351,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true + "bundled": true, + "optional": true } } } @@ -10365,7908 +10403,6 @@ "fast-deep-equal": "^3.0.0-beta.2", "react-draggable": "^4.0.3", "scheduler": "^0.16.2" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "bundled": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/core": { - "version": "7.6.3", - "bundled": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helpers": "^7.6.2", - "@babel/parser": "^7.6.3", - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.3", - "@babel/types": "^7.6.3", - "convert-source-map": "^1.1.0", - "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.6.1" - }, - "dependencies": { - "@babel/generator": { - "version": "7.6.3", - "bundled": true, - "requires": { - "@babel/types": "^7.6.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.6.1" - } - }, - "@babel/parser": { - "version": "7.6.3", - "bundled": true - }, - "@babel/traverse": { - "version": "7.6.3", - "bundled": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.3", - "@babel/types": "^7.6.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.6.3", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "@babel/generator": { - "version": "7.6.2", - "bundled": true, - "requires": { - "@babel/types": "^7.6.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.6.1", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "bundled": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "bundled": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.3.0", - "bundled": true, - "requires": { - "@babel/types": "^7.3.0", - "esutils": "^2.0.0" - } - }, - "@babel/helper-call-delegate": { - "version": "7.4.4", - "bundled": true, - "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.6.0", - "bundled": true, - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4" - } - }, - "@babel/helper-define-map": { - "version": "7.5.5", - "bundled": true, - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.5.5", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/types": { - "version": "7.6.1", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "bundled": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-function-name": { - "version": "7.1.0", - "bundled": true, - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "bundled": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.4.4", - "bundled": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.5.5", - "bundled": true, - "requires": { - "@babel/types": "^7.5.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.6.1", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-module-imports": { - "version": "7.0.0", - "bundled": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-module-transforms": { - "version": "7.5.5", - "bundled": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.5.5", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/types": { - "version": "7.6.1", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "bundled": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.0.0", - "bundled": true - }, - "@babel/helper-regex": { - "version": "7.5.5", - "bundled": true, - "requires": { - "lodash": "^4.17.13" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "bundled": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-replace-supers": { - "version": "7.5.5", - "bundled": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.6.1", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-simple-access": { - "version": "7.1.0", - "bundled": true, - "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "bundled": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/helper-wrap-function": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" - } - }, - "@babel/helpers": { - "version": "7.6.2", - "bundled": true, - "requires": { - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.2", - "@babel/types": "^7.6.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.6.1", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/highlight": { - "version": "7.5.0", - "bundled": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.6.2", - "bundled": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.5.5", - "bundled": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.5.5", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.6.0", - "bundled": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.6.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-decorators": "^7.2.0" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.5.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.6.2", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.6.2", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.3.3", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.5.0", - "bundled": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.6.2", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.13" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.5.5", - "bundled": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.6.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.6.2", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.5.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.4.4", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.2.0" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "bundled": true, - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.5.0", - "bundled": true, - "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.6.0", - "bundled": true, - "requires": { - "@babel/helper-module-transforms": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.5.0", - "bundled": true, - "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.6.2", - "bundled": true, - "requires": { - "regexpu-core": "^4.6.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.4.4", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.5.5", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "bundled": true, - "requires": { - "@babel/helper-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.3.0", - "bundled": true, - "requires": { - "@babel/helper-builder-react-jsx": "^7.3.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.5.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "bundled": true, - "requires": { - "regenerator-transform": "^0.14.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.6.0", - "bundled": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "resolve": "^1.8.1", - "semver": "^5.5.1" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.6.2", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "bundled": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.6.0", - "bundled": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.6.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-typescript": "^7.2.0" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.6.2", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" - } - }, - "@babel/preset-env": { - "version": "7.6.3", - "bundled": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-dynamic-import": "^7.5.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.6.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.5.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.6.3", - "@babel/plugin-transform-classes": "^7.5.5", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.6.0", - "@babel/plugin-transform-dotall-regex": "^7.6.2", - "@babel/plugin-transform-duplicate-keys": "^7.5.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.6.0", - "@babel/plugin-transform-modules-systemjs": "^7.5.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.3", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.5.5", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.6.2", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.6.2", - "@babel/types": "^7.6.3", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" - }, - "dependencies": { - "@babel/plugin-transform-block-scoping": { - "version": "7.6.3", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.13" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.6.3", - "bundled": true, - "requires": { - "regexpu-core": "^4.6.0" - } - }, - "@babel/types": { - "version": "7.6.3", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/preset-react": { - "version": "7.6.3", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0" - } - }, - "@babel/preset-typescript": { - "version": "7.6.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.6.0" - } - }, - "@babel/runtime": { - "version": "7.6.0", - "bundled": true, - "requires": { - "regenerator-runtime": "^0.13.2" - } - }, - "@babel/template": { - "version": "7.6.0", - "bundled": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.6.1", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/traverse": { - "version": "7.6.2", - "bundled": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.2", - "@babel/types": "^7.6.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/types": { - "version": "7.6.1", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/types": { - "version": "7.5.0", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" - } - }, - "@cypress/listr-verbose-renderer": { - "version": "0.4.1", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "@cypress/xvfb": { - "version": "1.2.4", - "bundled": true, - "requires": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "bundled": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "@hapi/address": { - "version": "2.1.2", - "bundled": true - }, - "@hapi/bourne": { - "version": "1.3.2", - "bundled": true - }, - "@hapi/hoek": { - "version": "8.2.4", - "bundled": true - }, - "@hapi/joi": { - "version": "15.1.1", - "bundled": true, - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.4", - "bundled": true, - "requires": { - "@hapi/hoek": "8.x.x" - } - }, - "@iarna/toml": { - "version": "2.2.3", - "bundled": true - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "bundled": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "bundled": true - }, - "@parcel/fs": { - "version": "1.11.0", - "bundled": true, - "requires": { - "@parcel/utils": "^1.11.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.2" - } - }, - "@parcel/logger": { - "version": "1.11.1", - "bundled": true, - "requires": { - "@parcel/workers": "^1.11.0", - "chalk": "^2.1.0", - "grapheme-breaker": "^0.3.2", - "ora": "^2.1.0", - "strip-ansi": "^4.0.0" - } - }, - "@parcel/utils": { - "version": "1.11.0", - "bundled": true - }, - "@parcel/watcher": { - "version": "1.12.1", - "bundled": true, - "requires": { - "@parcel/utils": "^1.11.0", - "chokidar": "^2.1.5" - } - }, - "@parcel/workers": { - "version": "1.11.0", - "bundled": true, - "requires": { - "@parcel/utils": "^1.11.0", - "physical-cpu-count": "^2.0.0" - } - }, - "@types/estree": { - "version": "0.0.39", - "bundled": true - }, - "@types/node": { - "version": "12.7.11", - "bundled": true - }, - "@types/normalize-package-data": { - "version": "2.4.0", - "bundled": true - }, - "@types/q": { - "version": "1.5.2", - "bundled": true - }, - "@types/resolve": { - "version": "0.0.8", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@welldone-software/why-did-you-render": { - "version": "3.3.7", - "bundled": true, - "requires": { - "lodash": "^4" - } - }, - "abab": { - "version": "2.0.2", - "bundled": true - }, - "acorn": { - "version": "5.7.3", - "bundled": true - }, - "acorn-globals": { - "version": "4.3.4", - "bundled": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.3.0", - "bundled": true - } - } - }, - "acorn-walk": { - "version": "6.2.0", - "bundled": true - }, - "ajv": { - "version": "6.10.2", - "bundled": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "dependencies": { - "fast-deep-equal": { - "version": "2.0.1", - "bundled": true - } - } - }, - "alphanum-sort": { - "version": "1.0.2", - "bundled": true - }, - "ansi-escapes": { - "version": "1.4.0", - "bundled": true - }, - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansi-to-html": { - "version": "0.6.11", - "bundled": true, - "requires": { - "entities": "^1.1.1" - } - }, - "anymatch": { - "version": "2.0.0", - "bundled": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "arch": { - "version": "2.1.1", - "bundled": true - }, - "argparse": { - "version": "1.0.10", - "bundled": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true - }, - "array-equal": { - "version": "1.0.0", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "asn1": { - "version": "0.2.4", - "bundled": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "4.10.1", - "bundled": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.5.0", - "bundled": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "bundled": true - }, - "util": { - "version": "0.10.3", - "bundled": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "bundled": true - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true - }, - "async": { - "version": "2.6.1", - "bundled": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "async-each": { - "version": "1.0.3", - "bundled": true - }, - "async-limiter": { - "version": "1.0.1", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "atob": { - "version": "2.1.2", - "bundled": true - }, - "autoprefixer": { - "version": "9.6.4", - "bundled": true, - "requires": { - "browserslist": "^4.7.0", - "caniuse-lite": "^1.0.30000998", - "chalk": "^2.4.2", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.18", - "postcss-value-parser": "^4.0.2" - }, - "dependencies": { - "browserslist": { - "version": "4.7.0", - "bundled": true, - "requires": { - "caniuse-lite": "^1.0.30000989", - "electron-to-chromium": "^1.3.247", - "node-releases": "^1.1.29" - } - }, - "caniuse-lite": { - "version": "1.0.30000999", - "bundled": true - }, - "electron-to-chromium": { - "version": "1.3.275", - "bundled": true - }, - "node-releases": { - "version": "1.1.34", - "bundled": true, - "requires": { - "semver": "^6.3.0" - } - }, - "postcss": { - "version": "7.0.18", - "bundled": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "postcss-value-parser": { - "version": "4.0.2", - "bundled": true - }, - "semver": { - "version": "6.3.0", - "bundled": true - }, - "source-map": { - "version": "0.6.1", - "bundled": true - }, - "supports-color": { - "version": "6.1.0", - "bundled": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "aws-sign2": { - "version": "0.7.0", - "bundled": true - }, - "aws4": { - "version": "1.8.0", - "bundled": true - }, - "babel-loader": { - "version": "8.0.6", - "bundled": true, - "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" - }, - "dependencies": { - "big.js": { - "version": "5.2.2", - "bundled": true - }, - "find-cache-dir": { - "version": "2.1.0", - "bundled": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "bundled": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "json5": { - "version": "1.0.1", - "bundled": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.2.3", - "bundled": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "locate-path": { - "version": "3.0.0", - "bundled": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "bundled": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - }, - "pify": { - "version": "4.0.1", - "bundled": true - }, - "pkg-dir": { - "version": "3.0.0", - "bundled": true, - "requires": { - "find-up": "^3.0.0" - } - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "bundled": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-macros": { - "version": "2.6.1", - "bundled": true, - "requires": { - "@babel/runtime": "^7.4.2", - "cosmiconfig": "^5.2.0", - "resolve": "^1.10.0" - } - }, - "babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "bundled": true - }, - "babel-preset-react-app": { - "version": "9.0.2", - "bundled": true, - "requires": { - "@babel/core": "7.6.0", - "@babel/plugin-proposal-class-properties": "7.5.5", - "@babel/plugin-proposal-decorators": "7.6.0", - "@babel/plugin-proposal-object-rest-spread": "7.5.5", - "@babel/plugin-syntax-dynamic-import": "7.2.0", - "@babel/plugin-transform-destructuring": "7.6.0", - "@babel/plugin-transform-flow-strip-types": "7.4.4", - "@babel/plugin-transform-react-display-name": "7.2.0", - "@babel/plugin-transform-runtime": "7.6.0", - "@babel/preset-env": "7.6.0", - "@babel/preset-react": "7.0.0", - "@babel/preset-typescript": "7.6.0", - "@babel/runtime": "7.6.0", - "babel-plugin-dynamic-import-node": "2.3.0", - "babel-plugin-macros": "2.6.1", - "babel-plugin-transform-react-remove-prop-types": "0.4.24" - }, - "dependencies": { - "@babel/core": { - "version": "7.6.0", - "bundled": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.0", - "@babel/helpers": "^7.6.0", - "@babel/parser": "^7.6.0", - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.0", - "@babel/types": "^7.6.0", - "convert-source-map": "^1.1.0", - "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.5.5", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" - } - }, - "@babel/preset-env": { - "version": "7.6.0", - "bundled": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-dynamic-import": "^7.5.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.5.5", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.5.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.6.0", - "@babel/plugin-transform-classes": "^7.5.5", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.6.0", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/plugin-transform-duplicate-keys": "^7.5.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.6.0", - "@babel/plugin-transform-modules-systemjs": "^7.5.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.0", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.5.5", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.4.4", - "@babel/types": "^7.6.0", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" - } - }, - "@babel/preset-react": { - "version": "7.0.0", - "bundled": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0" - } - }, - "@babel/types": { - "version": "7.6.1", - "bundled": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "bundled": true - } - } - }, - "babylon-walk": { - "version": "1.0.2", - "bundled": true, - "requires": { - "babel-runtime": "^6.11.6", - "babel-types": "^6.15.0", - "lodash.clone": "^4.5.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.1", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "bundled": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { - "version": "3.2.0", - "bundled": true - }, - "binary-extensions": { - "version": "1.13.1", - "bundled": true - }, - "bindings": { - "version": "1.2.1", - "bundled": true - }, - "bluebird": { - "version": "3.5.0", - "bundled": true - }, - "bn.js": { - "version": "4.11.8", - "bundled": true - }, - "boolbase": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brfs": { - "version": "1.6.1", - "bundled": true, - "requires": { - "quote-stream": "^1.0.1", - "resolve": "^1.1.5", - "static-module": "^2.2.0", - "through2": "^2.0.0" - } - }, - "brorand": { - "version": "1.1.0", - "bundled": true - }, - "browser-process-hrtime": { - "version": "0.1.3", - "bundled": true - }, - "browserify-aes": { - "version": "1.2.0", - "bundled": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "bundled": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "bundled": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "bundled": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "bundled": true, - "requires": { - "pako": "~1.0.5" - }, - "dependencies": { - "pako": { - "version": "1.0.10", - "bundled": true - } - } - }, - "browserslist": { - "version": "4.6.6", - "bundled": true, - "requires": { - "caniuse-lite": "^1.0.30000984", - "electron-to-chromium": "^1.3.191", - "node-releases": "^1.1.25" - } - }, - "buffer": { - "version": "4.9.1", - "bundled": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "bundled": true - }, - "buffer-equal": { - "version": "0.0.1", - "bundled": true - }, - "buffer-from": { - "version": "1.1.1", - "bundled": true - }, - "buffer-xor": { - "version": "1.0.3", - "bundled": true - }, - "builtin-modules": { - "version": "3.1.0", - "bundled": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "bundled": true - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cachedir": { - "version": "1.3.0", - "bundled": true, - "requires": { - "os-homedir": "^1.0.1" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "bundled": true - }, - "caller-callsite": { - "version": "2.0.0", - "bundled": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "bundled": true - }, - "caniuse-api": { - "version": "3.0.0", - "bundled": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30000984", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true - }, - "chalk": { - "version": "2.4.2", - "bundled": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "check-more-types": { - "version": "2.24.0", - "bundled": true - }, - "chokidar": { - "version": "2.1.8", - "bundled": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "ci-info": { - "version": "2.0.0", - "bundled": true - }, - "cipher-base": { - "version": "1.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "classnames": { - "version": "2.2.6", - "bundled": true - }, - "cli-cursor": { - "version": "2.1.0", - "bundled": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "bundled": true - }, - "cli-truncate": { - "version": "0.2.1", - "bundled": true, - "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - } - }, - "clone": { - "version": "2.1.2", - "bundled": true - }, - "coa": { - "version": "2.0.2", - "bundled": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.2", - "bundled": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.3", - "bundled": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "bundled": true - }, - "color-string": { - "version": "1.5.3", - "bundled": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "combined-stream": { - "version": "1.0.8", - "bundled": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-exists": { - "version": "1.2.8", - "bundled": true - }, - "commander": { - "version": "2.20.1", - "bundled": true - }, - "common-tags": { - "version": "1.8.0", - "bundled": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true - }, - "component-emitter": { - "version": "1.3.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concat-with-sourcemaps": { - "version": "1.1.0", - "bundled": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "console-browserify": { - "version": "1.1.0", - "bundled": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "bundled": true - }, - "convert-source-map": { - "version": "1.6.0", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true - }, - "core-js": { - "version": "2.6.9", - "bundled": true - }, - "core-js-compat": { - "version": "3.2.1", - "bundled": true, - "requires": { - "browserslist": "^4.6.6", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "bundled": true - } - } - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "cosmiconfig": { - "version": "5.2.1", - "bundled": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "version": "4.0.3", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "bundled": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "bundled": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "bundled": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "bundled": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "bundled": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "bundled": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-modules-loader-core": { - "version": "1.1.0", - "bundled": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.1", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true - }, - "postcss": { - "version": "6.0.1", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "bundled": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "css-select": { - "version": "2.0.2", - "bundled": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^2.1.2", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "bundled": true - }, - "css-selector-tokenizer": { - "version": "0.7.1", - "bundled": true, - "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "bundled": true - }, - "regexpu-core": { - "version": "1.0.0", - "bundled": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "bundled": true - }, - "regjsparser": { - "version": "0.1.5", - "bundled": true, - "requires": { - "jsesc": "~0.5.0" - } - } - } - }, - "css-tree": { - "version": "1.0.0-alpha.33", - "bundled": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.5.3" - } - }, - "css-unit-converter": { - "version": "1.1.1", - "bundled": true - }, - "css-what": { - "version": "2.1.3", - "bundled": true - }, - "cssesc": { - "version": "0.1.0", - "bundled": true - }, - "cssnano": { - "version": "4.1.10", - "bundled": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "bundled": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "bundled": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "bundled": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "bundled": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "bundled": true - }, - "csso": { - "version": "3.5.1", - "bundled": true, - "requires": { - "css-tree": "1.0.0-alpha.29" - }, - "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.29", - "bundled": true, - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - } - }, - "mdn-data": { - "version": "1.1.4", - "bundled": true - } - } - }, - "cssom": { - "version": "0.3.8", - "bundled": true - }, - "cssstyle": { - "version": "1.4.0", - "bundled": true, - "requires": { - "cssom": "0.3.x" - } - }, - "cypress": { - "version": "3.4.1", - "bundled": true, - "requires": { - "@cypress/listr-verbose-renderer": "0.4.1", - "@cypress/xvfb": "1.2.4", - "arch": "2.1.1", - "bluebird": "3.5.0", - "cachedir": "1.3.0", - "chalk": "2.4.2", - "check-more-types": "2.24.0", - "commander": "2.15.1", - "common-tags": "1.8.0", - "debug": "3.2.6", - "execa": "0.10.0", - "executable": "4.1.1", - "extract-zip": "1.6.7", - "fs-extra": "5.0.0", - "getos": "3.1.1", - "is-ci": "1.2.1", - "is-installed-globally": "0.1.0", - "lazy-ass": "1.6.0", - "listr": "0.12.0", - "lodash": "4.17.15", - "log-symbols": "2.2.0", - "minimist": "1.2.0", - "moment": "2.24.0", - "ramda": "0.24.1", - "request": "2.88.0", - "request-progress": "3.0.0", - "supports-color": "5.5.0", - "tmp": "0.1.0", - "url": "0.11.0", - "yauzl": "2.10.0" - }, - "dependencies": { - "ci-info": { - "version": "1.6.0", - "bundled": true - }, - "commander": { - "version": "2.15.1", - "bundled": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "requires": { - "ms": "^2.1.1" - } - }, - "execa": { - "version": "0.10.0", - "bundled": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "is-ci": { - "version": "1.2.1", - "bundled": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "lodash": { - "version": "4.17.15", - "bundled": true - } - } - }, - "d3-color": { - "version": "1.4.0", - "bundled": true - }, - "d3-dispatch": { - "version": "1.0.5", - "bundled": true - }, - "d3-drag": { - "version": "1.2.4", - "bundled": true, - "requires": { - "d3-dispatch": "1", - "d3-selection": "1" - } - }, - "d3-ease": { - "version": "1.0.5", - "bundled": true - }, - "d3-interpolate": { - "version": "1.3.2", - "bundled": true, - "requires": { - "d3-color": "1" - } - }, - "d3-selection": { - "version": "1.4.0", - "bundled": true - }, - "d3-timer": { - "version": "1.0.9", - "bundled": true - }, - "d3-transition": { - "version": "1.2.0", - "bundled": true, - "requires": { - "d3-color": "1", - "d3-dispatch": "1", - "d3-ease": "1", - "d3-interpolate": "1", - "d3-selection": "^1.1.0", - "d3-timer": "1" - } - }, - "d3-zoom": { - "version": "1.8.3", - "bundled": true, - "requires": { - "d3-dispatch": "1", - "d3-drag": "1", - "d3-interpolate": "1", - "d3-selection": "1", - "d3-transition": "1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "bundled": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "date-fns": { - "version": "1.30.1", - "bundled": true - }, - "date-now": { - "version": "0.1.4", - "bundled": true - }, - "deasync": { - "version": "0.1.15", - "bundled": true, - "requires": { - "bindings": "~1.2.1", - "node-addon-api": "^1.6.0" - } - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "deep-is": { - "version": "0.1.3", - "bundled": true - }, - "defaults": { - "version": "1.0.3", - "bundled": true, - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "bundled": true - } - } - }, - "define-properties": { - "version": "1.1.3", - "bundled": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "depd": { - "version": "1.1.2", - "bundled": true - }, - "des.js": { - "version": "1.0.0", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "bundled": true - }, - "diffie-hellman": { - "version": "5.0.3", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dom-serializer": { - "version": "0.1.1", - "bundled": true, - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "domain-browser": { - "version": "1.2.0", - "bundled": true - }, - "domelementtype": { - "version": "1.3.1", - "bundled": true - }, - "domexception": { - "version": "1.0.1", - "bundled": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.4.2", - "bundled": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "bundled": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "4.2.0", - "bundled": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "dotenv": { - "version": "5.0.1", - "bundled": true - }, - "dotenv-expand": { - "version": "5.1.0", - "bundled": true - }, - "duplexer": { - "version": "0.1.1", - "bundled": true - }, - "duplexer2": { - "version": "0.1.4", - "bundled": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "easy-peasy": { - "version": "3.1.0", - "bundled": true, - "requires": { - "immer-peasy": "3.1.3", - "memoizerific": "^1.11.3", - "prop-types": "^15.6.2", - "redux": "^4.0.4", - "redux-thunk": "^2.3.0", - "shallowequal": "^1.1.0", - "ts-toolbelt": "^4.7.23" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "bundled": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "bundled": true - }, - "electron-to-chromium": { - "version": "1.3.191", - "bundled": true - }, - "elegant-spinner": { - "version": "1.0.1", - "bundled": true - }, - "elliptic": { - "version": "6.5.1", - "bundled": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emojis-list": { - "version": "2.1.0", - "bundled": true - }, - "encodeurl": { - "version": "1.0.2", - "bundled": true - }, - "end-of-stream": { - "version": "1.4.4", - "bundled": true, - "requires": { - "once": "^1.4.0" - } - }, - "entities": { - "version": "1.1.2", - "bundled": true - }, - "envinfo": { - "version": "7.4.0", - "bundled": true - }, - "error-ex": { - "version": "1.3.2", - "bundled": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.13.0", - "bundled": true, - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "bundled": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escape-goat": { - "version": "2.1.1", - "bundled": true - }, - "escape-html": { - "version": "1.0.3", - "bundled": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "escodegen": { - "version": "1.9.1", - "bundled": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "bundled": true - }, - "source-map": { - "version": "0.6.1", - "bundled": true, - "optional": true - } - } - }, - "esprima": { - "version": "4.0.1", - "bundled": true - }, - "estraverse": { - "version": "4.3.0", - "bundled": true - }, - "estree-walker": { - "version": "0.6.1", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "etag": { - "version": "1.8.1", - "bundled": true - }, - "event-stream": { - "version": "3.3.4", - "bundled": true, - "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - } - }, - "events": { - "version": "3.0.0", - "bundled": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "bundled": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "1.0.0", - "bundled": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "executable": { - "version": "4.1.1", - "bundled": true, - "requires": { - "pify": "^2.2.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "bundled": true - } - } - }, - "exit-hook": { - "version": "1.1.1", - "bundled": true - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - } - } - }, - "extend": { - "version": "3.0.2", - "bundled": true - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extract-zip": { - "version": "1.6.7", - "bundled": true, - "requires": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "yauzl": { - "version": "2.4.1", - "bundled": true, - "requires": { - "fd-slicer": "~1.0.1" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "bundled": true - }, - "falafel": { - "version": "2.1.0", - "bundled": true, - "requires": { - "acorn": "^5.0.0", - "foreach": "^2.0.5", - "isarray": "0.0.1", - "object-keys": "^1.0.6" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "bundled": true - } - } - }, - "fast-deep-equal": { - "version": "3.0.0-beta.2", - "bundled": true - }, - "fast-glob": { - "version": "2.2.7", - "bundled": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "bundled": true - }, - "fastparse": { - "version": "1.1.2", - "bundled": true - }, - "fd-slicer": { - "version": "1.0.1", - "bundled": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figures": { - "version": "1.7.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "filesize": { - "version": "3.6.1", - "bundled": true - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-up": { - "version": "4.1.0", - "bundled": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "foreach": { - "version": "2.0.5", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true - }, - "form-data": { - "version": "2.3.3", - "bundled": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "bundled": true - }, - "from": { - "version": "0.1.7", - "bundled": true - }, - "fs-extra": { - "version": "5.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "fsevents": { - "version": "1.2.9", - "bundled": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "bundled": true - }, - "generic-names": { - "version": "1.0.3", - "bundled": true, - "requires": { - "loader-utils": "^0.2.16" - } - }, - "get-port": { - "version": "3.2.0", - "bundled": true - }, - "get-stdin": { - "version": "7.0.0", - "bundled": true - }, - "get-stream": { - "version": "4.1.0", - "bundled": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "bundled": true - }, - "getos": { - "version": "3.1.1", - "bundled": true, - "requires": { - "async": "2.6.1" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.4", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "bundled": true - }, - "global-dirs": { - "version": "0.1.1", - "bundled": true, - "requires": { - "ini": "^1.3.4" - } - }, - "globals": { - "version": "11.12.0", - "bundled": true - }, - "graceful-fs": { - "version": "4.2.0", - "bundled": true - }, - "grapheme-breaker": { - "version": "0.3.2", - "bundled": true, - "requires": { - "brfs": "^1.2.0", - "unicode-trie": "^0.3.1" - } - }, - "gzip-size": { - "version": "3.0.0", - "bundled": true, - "requires": { - "duplexer": "^0.1.1" - } - }, - "har-schema": { - "version": "2.0.0", - "bundled": true - }, - "har-validator": { - "version": "5.1.3", - "bundled": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "bundled": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } - } - }, - "has-flag": { - "version": "3.0.0", - "bundled": true - }, - "has-symbols": { - "version": "1.0.0", - "bundled": true - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "bundled": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hex-color-regex": { - "version": "1.1.0", - "bundled": true - }, - "hmac-drbg": { - "version": "1.0.1", - "bundled": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.8.4", - "bundled": true - }, - "hsl-regex": { - "version": "1.0.0", - "bundled": true - }, - "hsla-regex": { - "version": "1.0.0", - "bundled": true - }, - "html-comment-regex": { - "version": "1.1.2", - "bundled": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "bundled": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-tags": { - "version": "1.2.0", - "bundled": true - }, - "htmlnano": { - "version": "0.2.4", - "bundled": true, - "requires": { - "cssnano": "^4.1.10", - "normalize-html-whitespace": "^1.0.0", - "object-assign": "^4.0.1", - "posthtml": "^0.11.4", - "posthtml-render": "^1.1.5", - "svgo": "^1.2.2", - "terser": "^4.1.2", - "uncss": "^0.17.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - }, - "terser": { - "version": "4.3.8", - "bundled": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "bundled": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.4.0", - "bundled": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "http-errors": { - "version": "1.7.3", - "bundled": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "bundled": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "bundled": true - }, - "husky": { - "version": "3.0.8", - "bundled": true, - "requires": { - "chalk": "^2.4.2", - "cosmiconfig": "^5.2.1", - "execa": "^1.0.0", - "get-stdin": "^7.0.0", - "is-ci": "^2.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^4.2.0", - "please-upgrade-node": "^3.2.0", - "read-pkg": "^5.1.1", - "run-node": "^1.0.0", - "slash": "^3.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "bundled": true - }, - "ieee754": { - "version": "1.1.13", - "bundled": true - }, - "immer-peasy": { - "version": "3.1.3", - "bundled": true - }, - "import-cwd": { - "version": "2.1.0", - "bundled": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "bundled": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "bundled": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "indent-string": { - "version": "2.1.0", - "bundled": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "indexes-of": { - "version": "1.0.1", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-absolute-url": { - "version": "2.1.0", - "bundled": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-binary-path": { - "version": "1.0.1", - "bundled": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-callable": { - "version": "1.1.4", - "bundled": true - }, - "is-ci": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "bundled": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "bundled": true - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "bundled": true - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-extglob": { - "version": "2.1.1", - "bundled": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.1", - "bundled": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-html": { - "version": "1.1.0", - "bundled": true, - "requires": { - "html-tags": "^1.0.0" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "bundled": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-module": { - "version": "1.0.0", - "bundled": true - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "bundled": true - }, - "is-path-inside": { - "version": "1.0.1", - "bundled": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-promise": { - "version": "2.1.0", - "bundled": true - }, - "is-reference": { - "version": "1.1.4", - "bundled": true, - "requires": { - "@types/estree": "0.0.39" - } - }, - "is-regex": { - "version": "1.0.4", - "bundled": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-resolvable": { - "version": "1.1.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "is-svg": { - "version": "3.0.0", - "bundled": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.2", - "bundled": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true - }, - "is-url": { - "version": "1.2.4", - "bundled": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true - }, - "is-wsl": { - "version": "1.1.0", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true - }, - "jest-worker": { - "version": "24.9.0", - "bundled": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "bundled": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "js-levenshtein": { - "version": "1.1.6", - "bundled": true - }, - "js-tokens": { - "version": "4.0.0", - "bundled": true - }, - "js-yaml": { - "version": "3.13.1", - "bundled": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true - }, - "jsdom": { - "version": "14.1.0", - "bundled": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.3.0", - "bundled": true - }, - "escodegen": { - "version": "1.12.0", - "bundled": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "bundled": true - }, - "source-map": { - "version": "0.6.1", - "bundled": true, - "optional": true - }, - "ws": { - "version": "6.2.1", - "bundled": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "jsesc": { - "version": "2.5.2", - "bundled": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "bundled": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true - }, - "json5": { - "version": "2.1.1", - "bundled": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "bundled": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - }, - "lazy-ass": { - "version": "1.6.0", - "bundled": true - }, - "levn": { - "version": "0.3.0", - "bundled": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "bundled": true - }, - "listr": { - "version": "0.12.0", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "figures": "^1.7.0", - "indent-string": "^2.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.2.0", - "listr-verbose-renderer": "^0.4.0", - "log-symbols": "^1.0.2", - "log-update": "^1.0.2", - "ora": "^0.2.3", - "p-map": "^1.1.1", - "rxjs": "^5.0.0-beta.11", - "stream-to-observable": "^0.1.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "cli-spinners": { - "version": "0.1.2", - "bundled": true - }, - "log-symbols": { - "version": "1.0.2", - "bundled": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "ora": { - "version": "0.2.3", - "bundled": true, - "requires": { - "chalk": "^1.1.1", - "cli-cursor": "^1.0.2", - "cli-spinners": "^0.1.2", - "object-assign": "^4.0.1" - } - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "bundled": true - }, - "listr-update-renderer": { - "version": "0.2.0", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^1.0.2", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "indent-string": { - "version": "3.2.0", - "bundled": true - }, - "log-symbols": { - "version": "1.0.2", - "bundled": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "listr-verbose-renderer": { - "version": "0.4.1", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "livereload": { - "version": "0.8.2", - "bundled": true, - "requires": { - "chokidar": "^2.1.5", - "opts": ">= 1.2.0", - "ws": "^6.2.1" - }, - "dependencies": { - "ws": { - "version": "6.2.1", - "bundled": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "loader-utils": { - "version": "0.2.17", - "bundled": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - }, - "dependencies": { - "json5": { - "version": "0.5.1", - "bundled": true - } - } - }, - "locate-path": { - "version": "5.0.0", - "bundled": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.14", - "bundled": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "bundled": true - }, - "lodash.clone": { - "version": "4.5.0", - "bundled": true - }, - "lodash.memoize": { - "version": "4.1.2", - "bundled": true - }, - "lodash.once": { - "version": "4.1.1", - "bundled": true - }, - "lodash.sortby": { - "version": "4.7.0", - "bundled": true - }, - "lodash.uniq": { - "version": "4.5.0", - "bundled": true - }, - "log-symbols": { - "version": "2.2.0", - "bundled": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "log-update": { - "version": "1.0.2", - "bundled": true, - "requires": { - "ansi-escapes": "^1.0.0", - "cli-cursor": "^1.0.2" - }, - "dependencies": { - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - } - } - }, - "loose-envify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "magic-string": { - "version": "0.22.5", - "bundled": true, - "requires": { - "vlq": "^0.2.2" - } - }, - "make-dir": { - "version": "2.1.0", - "bundled": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "bundled": true - } - } - }, - "map-cache": { - "version": "0.2.2", - "bundled": true - }, - "map-or-similar": { - "version": "1.5.0", - "bundled": true - }, - "map-stream": { - "version": "0.1.0", - "bundled": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "maxmin": { - "version": "2.1.0", - "bundled": true, - "requires": { - "chalk": "^1.0.0", - "figures": "^1.0.1", - "gzip-size": "^3.0.0", - "pretty-bytes": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "md5.js": { - "version": "1.3.5", - "bundled": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "bundled": true - }, - "memoizerific": { - "version": "1.11.3", - "bundled": true, - "requires": { - "map-or-similar": "^1.5.0" - } - }, - "merge-source-map": { - "version": "1.0.4", - "bundled": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "merge-stream": { - "version": "2.0.0", - "bundled": true - }, - "merge2": { - "version": "1.3.0", - "bundled": true - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "2.4.4", - "bundled": true - }, - "mime-db": { - "version": "1.40.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.24", - "bundled": true, - "requires": { - "mime-db": "1.40.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "bundled": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "mixin-deep": { - "version": "1.3.2", - "bundled": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "moment": { - "version": "2.24.0", - "bundled": true - }, - "ms": { - "version": "2.1.2", - "bundled": true - }, - "nan": { - "version": "2.14.0", - "bundled": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "nice-try": { - "version": "1.0.5", - "bundled": true - }, - "node-addon-api": { - "version": "1.7.1", - "bundled": true - }, - "node-forge": { - "version": "0.7.6", - "bundled": true - }, - "node-libs-browser": { - "version": "2.2.1", - "bundled": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "bundled": true - } - } - }, - "node-releases": { - "version": "1.1.25", - "bundled": true, - "requires": { - "semver": "^5.3.0" - } - }, - "normalize-html-whitespace": { - "version": "1.0.0", - "bundled": true - }, - "normalize-package-data": { - "version": "2.5.0", - "bundled": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "bundled": true - }, - "normalize-range": { - "version": "0.1.2", - "bundled": true - }, - "normalize-url": { - "version": "3.3.0", - "bundled": true - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "bundled": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "bundled": true - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "nwsapi": { - "version": "2.1.4", - "bundled": true - }, - "oauth-sign": { - "version": "0.9.0", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.4.1", - "bundled": true - }, - "object-keys": { - "version": "1.1.1", - "bundled": true - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "bundled": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "bundled": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.0", - "bundled": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "on-finished": { - "version": "2.3.0", - "bundled": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "open": { - "version": "6.4.0", - "bundled": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "opencollective-postinstall": { - "version": "2.0.2", - "bundled": true - }, - "opener": { - "version": "1.5.1", - "bundled": true - }, - "opn": { - "version": "5.5.0", - "bundled": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.8.2", - "bundled": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "opts": { - "version": "1.2.6", - "bundled": true - }, - "ora": { - "version": "2.1.0", - "bundled": true, - "requires": { - "chalk": "^2.3.1", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.1.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^4.0.0", - "wcwidth": "^1.0.1" - } - }, - "os-browserify": { - "version": "0.3.0", - "bundled": true - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-limit": { - "version": "2.2.0", - "bundled": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "bundled": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "1.2.0", - "bundled": true - }, - "p-queue": { - "version": "2.4.2", - "bundled": true - }, - "p-try": { - "version": "2.2.0", - "bundled": true - }, - "pako": { - "version": "0.2.9", - "bundled": true - }, - "parcel-bundler": { - "version": "1.12.4", - "bundled": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.4.4", - "@babel/generator": "^7.4.4", - "@babel/parser": "^7.4.4", - "@babel/plugin-transform-flow-strip-types": "^7.4.4", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/preset-env": "^7.4.4", - "@babel/runtime": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4", - "@iarna/toml": "^2.2.0", - "@parcel/fs": "^1.11.0", - "@parcel/logger": "^1.11.1", - "@parcel/utils": "^1.11.0", - "@parcel/watcher": "^1.12.1", - "@parcel/workers": "^1.11.0", - "ansi-to-html": "^0.6.4", - "babylon-walk": "^1.0.2", - "browserslist": "^4.1.0", - "chalk": "^2.1.0", - "clone": "^2.1.1", - "command-exists": "^1.2.6", - "commander": "^2.11.0", - "core-js": "^2.6.5", - "cross-spawn": "^6.0.4", - "css-modules-loader-core": "^1.1.0", - "cssnano": "^4.0.0", - "deasync": "^0.1.14", - "dotenv": "^5.0.0", - "dotenv-expand": "^5.1.0", - "envinfo": "^7.3.1", - "fast-glob": "^2.2.2", - "filesize": "^3.6.0", - "get-port": "^3.2.0", - "htmlnano": "^0.2.2", - "is-glob": "^4.0.0", - "is-url": "^1.2.2", - "js-yaml": "^3.10.0", - "json5": "^1.0.1", - "micromatch": "^3.0.4", - "mkdirp": "^0.5.1", - "node-forge": "^0.7.1", - "node-libs-browser": "^2.0.0", - "opn": "^5.1.0", - "postcss": "^7.0.11", - "postcss-value-parser": "^3.3.1", - "posthtml": "^0.11.2", - "posthtml-parser": "^0.4.0", - "posthtml-render": "^1.1.3", - "resolve": "^1.4.0", - "semver": "^5.4.1", - "serialize-to-js": "^3.0.0", - "serve-static": "^1.12.4", - "source-map": "0.6.1", - "terser": "^3.7.3", - "v8-compile-cache": "^2.0.0", - "ws": "^5.1.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "bundled": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "parse-asn1": { - "version": "5.1.5", - "bundled": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "bundled": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse5": { - "version": "5.1.0", - "bundled": true - }, - "parseurl": { - "version": "1.3.3", - "bundled": true - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true - }, - "path-browserify": { - "version": "0.0.1", - "bundled": true - }, - "path-dirname": { - "version": "1.0.2", - "bundled": true - }, - "path-exists": { - "version": "4.0.0", - "bundled": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-is-inside": { - "version": "1.0.2", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.6", - "bundled": true - }, - "pause-stream": { - "version": "0.0.11", - "bundled": true, - "requires": { - "through": "~2.3" - } - }, - "pbkdf2": { - "version": "3.0.17", - "bundled": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pend": { - "version": "1.2.0", - "bundled": true - }, - "performance-now": { - "version": "2.1.0", - "bundled": true - }, - "physical-cpu-count": { - "version": "2.0.0", - "bundled": true - }, - "pify": { - "version": "3.0.0", - "bundled": true - }, - "pkg-dir": { - "version": "4.2.0", - "bundled": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "please-upgrade-node": { - "version": "3.2.0", - "bundled": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "pn": { - "version": "1.1.0", - "bundled": true - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true - }, - "postcss": { - "version": "7.0.17", - "bundled": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - }, - "supports-color": { - "version": "6.1.0", - "bundled": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-calc": { - "version": "7.0.1", - "bundled": true, - "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "bundled": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "bundled": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "bundled": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "bundled": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "bundled": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "bundled": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-load-config": { - "version": "2.1.0", - "bundled": true, - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "bundled": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "bundled": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "bundled": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "bundled": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "bundled": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "bundled": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "bundled": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "bundled": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules": { - "version": "1.4.1", - "bundled": true, - "requires": { - "css-modules-loader-core": "^1.1.0", - "generic-names": "^1.0.3", - "lodash.camelcase": "^4.3.0", - "postcss": "^7.0.1", - "string-hash": "^1.1.1" - } - }, - "postcss-modules-extract-imports": { - "version": "1.1.0", - "bundled": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "bundled": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "bundled": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "bundled": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "bundled": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "bundled": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "bundled": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "bundled": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "postcss-nested": { - "version": "4.1.2", - "bundled": true, - "requires": { - "postcss": "^7.0.14", - "postcss-selector-parser": "^5.0.0" - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "bundled": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "bundled": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "bundled": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "bundled": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "bundled": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "bundled": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "bundled": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "bundled": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "bundled": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "bundled": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "bundled": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "bundled": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "bundled": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "bundled": true - } - } - }, - "postcss-svgo": { - "version": "4.0.2", - "bundled": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "bundled": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "bundled": true - }, - "posthtml": { - "version": "0.11.6", - "bundled": true, - "requires": { - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5" - } - }, - "posthtml-parser": { - "version": "0.4.1", - "bundled": true, - "requires": { - "htmlparser2": "^3.9.2", - "object-assign": "^4.1.1" - } - }, - "posthtml-render": { - "version": "1.1.5", - "bundled": true - }, - "prelude-ls": { - "version": "1.1.2", - "bundled": true - }, - "pretty-bytes": { - "version": "3.0.1", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "private": { - "version": "0.1.8", - "bundled": true - }, - "process": { - "version": "0.11.10", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true - }, - "promise.series": { - "version": "0.2.0", - "bundled": true - }, - "prop-types": { - "version": "15.7.2", - "bundled": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "ps-tree": { - "version": "1.2.0", - "bundled": true, - "requires": { - "event-stream": "=3.3.4" - } - }, - "psl": { - "version": "1.2.0", - "bundled": true - }, - "public-encrypt": { - "version": "4.0.3", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "bundled": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "bundled": true - }, - "pupa": { - "version": "2.0.1", - "bundled": true, - "requires": { - "escape-goat": "^2.0.0" - } - }, - "q": { - "version": "1.5.1", - "bundled": true - }, - "qs": { - "version": "6.5.2", - "bundled": true - }, - "querystring": { - "version": "0.2.0", - "bundled": true - }, - "querystring-es3": { - "version": "0.2.1", - "bundled": true - }, - "quote-stream": { - "version": "1.0.2", - "bundled": true, - "requires": { - "buffer-equal": "0.0.1", - "minimist": "^1.1.3", - "through2": "^2.0.0" - } - }, - "ramda": { - "version": "0.24.1", - "bundled": true - }, - "randombytes": { - "version": "2.1.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "bundled": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "bundled": true - }, - "react-draggable": { - "version": "4.0.3", - "bundled": true, - "requires": { - "classnames": "^2.2.5", - "prop-types": "^15.6.0" - } - }, - "react-is": { - "version": "16.10.2", - "bundled": true - }, - "read-pkg": { - "version": "5.2.0", - "bundled": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "parse-json": { - "version": "5.0.0", - "bundled": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "redux": { - "version": "4.0.4", - "bundled": true, - "requires": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" - } - }, - "redux-thunk": { - "version": "2.3.0", - "bundled": true - }, - "regenerate": { - "version": "1.4.0", - "bundled": true - }, - "regenerate-unicode-properties": { - "version": "8.1.0", - "bundled": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.3", - "bundled": true - }, - "regenerator-transform": { - "version": "0.14.1", - "bundled": true, - "requires": { - "private": "^0.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "4.6.0", - "bundled": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - }, - "regjsgen": { - "version": "0.5.0", - "bundled": true - }, - "regjsparser": { - "version": "0.6.0", - "bundled": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "bundled": true - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, - "repeat-element": { - "version": "1.1.3", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.0", - "bundled": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "tough-cookie": { - "version": "2.4.3", - "bundled": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } - } - }, - "request-progress": { - "version": "3.0.0", - "bundled": true, - "requires": { - "throttleit": "^1.0.0" - } - }, - "request-promise-core": { - "version": "1.1.2", - "bundled": true, - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "bundled": true, - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "reserved-words": { - "version": "0.1.2", - "bundled": true - }, - "resolve": { - "version": "1.11.0", - "bundled": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "3.0.0", - "bundled": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true - }, - "restore-cursor": { - "version": "2.0.0", - "bundled": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "bundled": true - }, - "rgb-regex": { - "version": "1.0.1", - "bundled": true - }, - "rgba-regex": { - "version": "1.0.0", - "bundled": true - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "bundled": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rollup": { - "version": "1.23.1", - "bundled": true, - "requires": { - "@types/estree": "*", - "@types/node": "*", - "acorn": "^7.1.0" - }, - "dependencies": { - "acorn": { - "version": "7.1.0", - "bundled": true - } - } - }, - "rollup-plugin-babel": { - "version": "4.3.3", - "bundled": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-bundle-size": { - "version": "1.0.3", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "maxmin": "^2.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "bundled": true, - "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - }, - "dependencies": { - "magic-string": { - "version": "0.25.4", - "bundled": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - } - } - }, - "rollup-plugin-livereload": { - "version": "1.0.4", - "bundled": true, - "requires": { - "livereload": "0.8.0 || ^0.8.2" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "bundled": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - }, - "dependencies": { - "resolve": { - "version": "1.12.0", - "bundled": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "rollup-plugin-peer-deps-external": { - "version": "2.2.0", - "bundled": true - }, - "rollup-plugin-postcss": { - "version": "2.0.3", - "bundled": true, - "requires": { - "chalk": "^2.4.2", - "concat-with-sourcemaps": "^1.0.5", - "cssnano": "^4.1.8", - "import-cwd": "^2.1.0", - "p-queue": "^2.4.2", - "pify": "^3.0.0", - "postcss": "^7.0.14", - "postcss-load-config": "^2.0.0", - "postcss-modules": "^1.4.1", - "promise.series": "^0.2.0", - "reserved-words": "^0.1.2", - "resolve": "^1.5.0", - "rollup-pluginutils": "^2.0.1", - "style-inject": "^0.3.0" - } - }, - "rollup-plugin-replace": { - "version": "2.2.0", - "bundled": true, - "requires": { - "magic-string": "^0.25.2", - "rollup-pluginutils": "^2.6.0" - }, - "dependencies": { - "magic-string": { - "version": "0.25.4", - "bundled": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - } - } - }, - "rollup-plugin-serve": { - "version": "1.0.1", - "bundled": true, - "requires": { - "mime": ">=2.0.3", - "opener": "1" - } - }, - "rollup-plugin-svg": { - "version": "2.0.0", - "bundled": true, - "requires": { - "rollup-pluginutils": "^1.3.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.2.1", - "bundled": true - }, - "rollup-pluginutils": { - "version": "1.5.2", - "bundled": true, - "requires": { - "estree-walker": "^0.2.1", - "minimatch": "^3.0.2" - } - } - } - }, - "rollup-plugin-terser": { - "version": "5.1.2", - "bundled": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "jest-worker": "^24.6.0", - "rollup-pluginutils": "^2.8.1", - "serialize-javascript": "^1.7.0", - "terser": "^4.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - }, - "terser": { - "version": "4.3.8", - "bundled": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - } - } - }, - "rollup-plugin-uglify": { - "version": "6.0.3", - "bundled": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "jest-worker": "^24.0.0", - "serialize-javascript": "^1.9.0", - "uglify-js": "^3.4.9" - } - }, - "rollup-plugin-visualizer": { - "version": "2.6.0", - "bundled": true, - "requires": { - "mkdirp": "^0.5.1", - "open": "^6.3.0", - "pupa": "^2.0.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "bundled": true - } - } - }, - "rollup-pluginutils": { - "version": "2.8.1", - "bundled": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, - "run-node": { - "version": "1.0.0", - "bundled": true - }, - "rx": { - "version": "4.1.0", - "bundled": true - }, - "rxjs": { - "version": "5.5.12", - "bundled": true, - "requires": { - "symbol-observable": "1.0.1" - }, - "dependencies": { - "symbol-observable": { - "version": "1.0.1", - "bundled": true - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "saxes": { - "version": "3.1.11", - "bundled": true, - "requires": { - "xmlchars": "^2.1.1" - } - }, - "scheduler": { - "version": "0.16.2", - "bundled": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "semver": { - "version": "5.7.0", - "bundled": true - }, - "semver-compare": { - "version": "1.0.0", - "bundled": true - }, - "send": { - "version": "0.17.1", - "bundled": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "bundled": true - } - } - }, - "mime": { - "version": "1.6.0", - "bundled": true - }, - "ms": { - "version": "2.1.1", - "bundled": true - } - } - }, - "serialize-javascript": { - "version": "1.9.1", - "bundled": true - }, - "serialize-to-js": { - "version": "3.0.0", - "bundled": true - }, - "serve-static": { - "version": "1.14.1", - "bundled": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-value": { - "version": "2.0.1", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "bundled": true - }, - "setprototypeof": { - "version": "1.1.1", - "bundled": true - }, - "sha.js": { - "version": "2.4.11", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-copy": { - "version": "0.0.1", - "bundled": true - }, - "shallowequal": { - "version": "1.1.0", - "bundled": true - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "simple-swizzle": { - "version": "0.2.2", - "bundled": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "bundled": true - } - } - }, - "slash": { - "version": "3.0.0", - "bundled": true - }, - "slice-ansi": { - "version": "0.0.4", - "bundled": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true - }, - "source-map-resolve": { - "version": "0.5.2", - "bundled": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.13", - "bundled": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true - }, - "sourcemap-codec": { - "version": "1.4.6", - "bundled": true - }, - "spdx-correct": { - "version": "3.1.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "bundled": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "bundled": true - }, - "split": { - "version": "0.3.3", - "bundled": true, - "requires": { - "through": "2" - } - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "bundled": true - }, - "sshpk": { - "version": "1.16.1", - "bundled": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stable": { - "version": "0.1.8", - "bundled": true - }, - "start-server-and-test": { - "version": "1.10.4", - "bundled": true, - "requires": { - "bluebird": "3.7.0", - "check-more-types": "2.24.0", - "debug": "4.1.1", - "execa": "2.0.5", - "lazy-ass": "1.6.0", - "ps-tree": "1.2.0", - "wait-on": "3.3.0" - }, - "dependencies": { - "bluebird": { - "version": "3.7.0", - "bundled": true - }, - "execa": { - "version": "2.0.5", - "bundled": true, - "requires": { - "cross-spawn": "^6.0.5", - "get-stream": "^5.0.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^3.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.1.0", - "bundled": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "2.0.0", - "bundled": true - }, - "mimic-fn": { - "version": "2.1.0", - "bundled": true - }, - "npm-run-path": { - "version": "3.1.0", - "bundled": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.0", - "bundled": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "p-finally": { - "version": "2.0.1", - "bundled": true - }, - "path-key": { - "version": "3.1.0", - "bundled": true - } - } - }, - "static-eval": { - "version": "2.0.2", - "bundled": true, - "requires": { - "escodegen": "^1.8.1" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "static-module": { - "version": "2.2.5", - "bundled": true, - "requires": { - "concat-stream": "~1.6.0", - "convert-source-map": "^1.5.1", - "duplexer2": "~0.1.4", - "escodegen": "~1.9.0", - "falafel": "^2.1.0", - "has": "^1.0.1", - "magic-string": "^0.22.4", - "merge-source-map": "1.0.4", - "object-inspect": "~1.4.0", - "quote-stream": "~1.0.2", - "readable-stream": "~2.3.3", - "shallow-copy": "~0.0.1", - "static-eval": "^2.0.0", - "through2": "~2.0.3" - } - }, - "statuses": { - "version": "1.5.0", - "bundled": true - }, - "stealthy-require": { - "version": "1.1.1", - "bundled": true - }, - "stream-browserify": { - "version": "2.0.2", - "bundled": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-combiner": { - "version": "0.0.4", - "bundled": true, - "requires": { - "duplexer": "~0.1.1" - } - }, - "stream-http": { - "version": "2.8.3", - "bundled": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-to-observable": { - "version": "0.1.0", - "bundled": true - }, - "string-hash": { - "version": "1.1.3", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "strip-final-newline": { - "version": "2.0.0", - "bundled": true - }, - "style-inject": { - "version": "0.3.0", - "bundled": true - }, - "stylehacks": { - "version": "4.0.3", - "bundled": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "bundled": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "bundled": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "1.3.0", - "bundled": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.33", - "csso": "^3.5.1", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "symbol-observable": { - "version": "1.2.0", - "bundled": true - }, - "symbol-tree": { - "version": "3.2.4", - "bundled": true - }, - "terser": { - "version": "3.17.0", - "bundled": true, - "requires": { - "commander": "^2.19.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.10" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "throttleit": { - "version": "1.0.0", - "bundled": true - }, - "through": { - "version": "2.3.8", - "bundled": true - }, - "through2": { - "version": "2.0.5", - "bundled": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "timers-browserify": { - "version": "2.0.11", - "bundled": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "bundled": true - }, - "tiny-inflate": { - "version": "1.0.2", - "bundled": true - }, - "tmp": { - "version": "0.1.0", - "bundled": true, - "requires": { - "rimraf": "^2.6.3" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "bundled": true - }, - "to-fast-properties": { - "version": "2.0.0", - "bundled": true - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.0", - "bundled": true - }, - "tough-cookie": { - "version": "2.5.0", - "bundled": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "bundled": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "ts-toolbelt": { - "version": "4.8.4", - "bundled": true - }, - "tty-browserify": { - "version": "0.0.0", - "bundled": true - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true - }, - "type-check": { - "version": "0.3.2", - "bundled": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.6.0", - "bundled": true - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - }, - "uglify-js": { - "version": "3.6.0", - "bundled": true, - "requires": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true - } - } - }, - "uncss": { - "version": "0.17.2", - "bundled": true, - "requires": { - "commander": "^2.20.0", - "glob": "^7.1.4", - "is-absolute-url": "^3.0.1", - "is-html": "^1.1.0", - "jsdom": "^14.1.0", - "lodash": "^4.17.15", - "postcss": "^7.0.17", - "postcss-selector-parser": "6.0.2", - "request": "^2.88.0" - }, - "dependencies": { - "cssesc": { - "version": "3.0.0", - "bundled": true - }, - "is-absolute-url": { - "version": "3.0.3", - "bundled": true - }, - "lodash": { - "version": "4.17.15", - "bundled": true - }, - "postcss-selector-parser": { - "version": "6.0.2", - "bundled": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "bundled": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "bundled": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "bundled": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "bundled": true - }, - "unicode-trie": { - "version": "0.3.1", - "bundled": true, - "requires": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, - "union-value": { - "version": "1.0.1", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "bundled": true - }, - "uniqs": { - "version": "2.0.0", - "bundled": true - }, - "universalify": { - "version": "0.1.2", - "bundled": true - }, - "unquote": { - "version": "1.1.1", - "bundled": true - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true - } - } - }, - "upath": { - "version": "1.2.0", - "bundled": true - }, - "uri-js": { - "version": "4.2.2", - "bundled": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "bundled": true - }, - "url": { - "version": "0.11.0", - "bundled": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "bundled": true - } - } - }, - "use": { - "version": "3.1.1", - "bundled": true - }, - "util": { - "version": "0.11.1", - "bundled": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "bundled": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "util.promisify": { - "version": "1.0.0", - "bundled": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "uuid": { - "version": "3.3.2", - "bundled": true - }, - "v8-compile-cache": { - "version": "2.1.0", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "bundled": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vendors": { - "version": "1.0.3", - "bundled": true - }, - "verror": { - "version": "1.10.0", - "bundled": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vlq": { - "version": "0.2.3", - "bundled": true - }, - "vm-browserify": { - "version": "1.1.0", - "bundled": true - }, - "w3c-hr-time": { - "version": "1.0.1", - "bundled": true, - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "bundled": true, - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "wait-on": { - "version": "3.3.0", - "bundled": true, - "requires": { - "@hapi/joi": "^15.0.3", - "core-js": "^2.6.5", - "minimist": "^1.2.0", - "request": "^2.88.0", - "rx": "^4.1.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "bundled": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "bundled": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "bundled": true - }, - "whatwg-url": { - "version": "7.0.0", - "bundled": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "1.3.1", - "bundled": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wordwrap": { - "version": "1.0.0", - "bundled": true - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "ws": { - "version": "5.2.2", - "bundled": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "bundled": true - }, - "xmlchars": { - "version": "2.2.0", - "bundled": true - }, - "xtend": { - "version": "4.0.2", - "bundled": true - }, - "yauzl": { - "version": "2.10.0", - "bundled": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - }, - "dependencies": { - "fd-slicer": { - "version": "1.1.0", - "bundled": true, - "requires": { - "pend": "~1.2.0" - } - } - } - } } }, "react-is": { diff --git a/example/src/Empty/index.js b/example/src/Empty/index.js new file mode 100644 index 000000000..15033b645 --- /dev/null +++ b/example/src/Empty/index.js @@ -0,0 +1,83 @@ +import React, { PureComponent } from 'react'; + +import Graph, { removeElements, addEdge, getOutgoers } from 'react-flow'; + +const onNodeDragStop = node => console.log('drag stop', node); + +class App extends PureComponent { + constructor() { + super(); + + this.state = { + graphLoaded: false, + elements: [] + }; + } + + onLoad(graphInstance) { + console.log('graph loaded:', graphInstance); + + this.graphInstance = graphInstance; + this.setState({ + graphLoaded: true + }); + } + + onElementClick(element) { + console.log('click', element); + console.log('outgoers', getOutgoers(element, this.state.elements)); + } + + onElementsRemove(elementsToRemove) { + this.setState(prevState => ({ + elements: removeElements(elementsToRemove, prevState.elements) + })); + } + + onConnect(params) { + console.log('connect', params); + this.setState(prevState => ({ + elements: addEdge(params, prevState.elements) + })); + } + + onAdd() { + this.setState((prevState) => { + const nodeId = (prevState.elements.length + 1).toString(); + + return { + ...prevState, + elements: prevState.elements.concat({ + id: nodeId, + data: { label: `Node: ${nodeId}` }, + position: { x: Math.random() * window.innerWidth, y: Math.random() * window.innerHeight } + }) + }; + }); + } + + render() { + return ( + this.onLoad(graphInstance)} + onElementClick={element => this.onElementClick(element)} + onElementsRemove={elements => this.onElementsRemove(elements)} + onConnect={params => this.onConnect(params)} + onNodeDragStop={onNodeDragStop} + style={{ width: '100%', height: '100%' }} + backgroundType="lines" + > + + + ); + } +} + +export default App; diff --git a/example/src/index.js b/example/src/index.js index 3e463b907..351f053bd 100644 --- a/example/src/index.js +++ b/example/src/index.js @@ -4,6 +4,7 @@ import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import Advanced from './Advanced'; import Basic from './Basic'; +import Empty from './Empty'; import './index.css'; @@ -13,6 +14,9 @@ ReactDOM.render(( + + + diff --git a/package-lock.json b/package-lock.json index f55c69ac7..57fd74f2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1315,6 +1315,12 @@ "rollup-pluginutils": "^2.8.1" } }, + "@types/classnames": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.2.9.tgz", + "integrity": "sha512-MNl+rT5UmZeilaPxAVs6YaPC2m6aA8rofviZbhbxpPpl61uKodfdQVsBtgJGTqGizEf02oW3tsVe7FYB8kK14A==", + "dev": true + }, "@types/d3": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-5.7.2.tgz", @@ -1588,9 +1594,9 @@ "dev": true }, "@types/node": { - "version": "12.7.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.11.tgz", - "integrity": "sha512-Otxmr2rrZLKRYIybtdG/sgeO+tHY20GxeDjcGmUnmmlCWyEnv2a2x1ZXBo3BTec4OiTXMQCiazB8NMBf0iRlFw==", + "version": "12.7.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz", + "integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==", "dev": true }, "@types/normalize-package-data": { @@ -7046,6 +7052,11 @@ "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", "dev": true }, + "resize-observer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resize-observer/-/resize-observer-1.0.0.tgz", + "integrity": "sha512-D7UFShDm2TgrEDEyeg+/tTEbvOgPWlvPAfJtxiKp+qutu6HowmcGJKjECgGru0PPDIj3SAucn3ZPpOx54fF7DQ==" + }, "resolve": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", diff --git a/package.json b/package.json index fb064b274..08ad3897e 100644 --- a/package.json +++ b/package.json @@ -13,12 +13,14 @@ "easy-peasy": "^3.1.0", "fast-deep-equal": "^3.0.0-beta.2", "react-draggable": "^4.0.3", + "resize-observer": "^1.0.0", "scheduler": "^0.16.2" }, "devDependencies": { "@babel/core": "^7.6.4", "@babel/preset-env": "^7.6.3", "@babel/preset-react": "^7.6.3", + "@types/classnames": "^2.2.9", "@types/d3": "^5.7.2", "@types/react": "^16.9.6", "@types/react-dom": "^16.9.2", diff --git a/src/components/BackgroundGrid/index.tsx b/src/components/BackgroundGrid/index.tsx new file mode 100644 index 000000000..4c79e0228 --- /dev/null +++ b/src/components/BackgroundGrid/index.tsx @@ -0,0 +1,85 @@ +import React, {memo} from 'react'; +import classnames from 'classnames'; + +import { useStoreState } from '../../store/hooks'; +import { GridType } from '../../types'; + +interface GridProps { + backgroundType?: GridType; + gap?: number; + color?: string; + size?: number; + style?: React.CSSProperties; + className?: string | null; +}; + +const baseStyles: React.CSSProperties = { + position: 'absolute', + top: 0, + left: 0, +}; + +const createGridLines = (width: number, height: number, xOffset: number, yOffset: number, gap: number): string => { + const lineCountX = Math.ceil(width / gap) + 1; + const lineCountY = Math.ceil(height / gap) + 1; + + const xValues = Array.from({length: lineCountX}, (_, i) => `M${i * gap + xOffset} 0 V${height}`); + const yValues = Array.from({length: lineCountY}, (_, i) => `M0 ${i * gap + yOffset} H${width}`); + + return [...xValues, ...yValues].join(' '); +}; + +const createGridDots = ( + width: number, + height: number, + xOffset: number, + yOffset: number, + gap: number, + size: number +): string => { + const lineCountX = Math.ceil(width / gap) + 1; + const lineCountY = Math.ceil(height / gap) + 1; + + const values = Array.from({length: lineCountX}, (_, col) => { + const x = col * gap + xOffset; + return Array.from({length: lineCountY}, (_, row) => { + const y = row * gap + yOffset; + return `M${x} ${y - size} l${size} ${size} l${-size} ${size} l${-size} ${-size}z`; + }).join(' '); + }); + + return values.join(' '); +}; + +const Grid = memo( + ({gap = 24, color = '#aaa', size = 0.5, style = {}, className = null, backgroundType = GridType.Dots}: GridProps) => { + const { + width, + height, + transform: [x, y, scale], + } = useStoreState(s => s); + + const gridClasses = classnames('react-flow__grid', className); + const scaledGap = gap * scale; + + const xOffset = x % scaledGap; + const yOffset = y % scaledGap; + const isLines = backgroundType === 'lines'; + const path = isLines + ? createGridLines(width, height, xOffset, yOffset, scaledGap) + : createGridDots(width, height, xOffset, yOffset, scaledGap, size); + + const fill = isLines ? 'none' : color; + const stroke = isLines ? color : 'none'; + + return ( + + + + ); + } +); + +Grid.displayName = 'Grid'; + +export default Grid; diff --git a/src/components/ConnectionLine/index.js b/src/components/ConnectionLine/index.js deleted file mode 100644 index bc245553b..000000000 --- a/src/components/ConnectionLine/index.js +++ /dev/null @@ -1,49 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import cx from 'classnames'; - -export default (props) => { - const [sourceNode, setSourceNode] = useState(null); - const hasHandleId = props.connectionSourceId.includes('__'); - const sourceIdSplitted = props.connectionSourceId.split('__'); - const nodeId = sourceIdSplitted[0]; - const handleId = hasHandleId ? sourceIdSplitted[1] : null; - - useEffect(() => { - setSourceNode(props.nodes.find(n => n.id === nodeId)); - }, []); - - if (!sourceNode) { - return null; - } - - const style = props.connectionLineStyle || {}; - const className = cx('react-flow__edge', 'connection', props.className); - - const sourceHandle = handleId ? sourceNode.__rg.handleBounds.source.find(d => d.id === handleId) : sourceNode.__rg.handleBounds.source[0]; - const sourceHandleX = sourceHandle ? sourceHandle.x + (sourceHandle.width / 2) : sourceNode.__rg.width / 2; - const sourceHandleY = sourceHandle ? sourceHandle.y + (sourceHandle.height / 2) : sourceNode.__rg.height; - const sourceX = sourceNode.__rg.position.x + sourceHandleX; - const sourceY = sourceNode.__rg.position.y + sourceHandleY; - - const targetX = (props.connectionPositionX - props.transform[0]) * (1 / props.transform[2]); - const targetY = (props.connectionPositionY - props.transform[1]) * (1 / props.transform[2]); - - let dAttr = ''; - - if (props.connectionLineType === 'bezier') { - const yOffset = Math.abs(targetY - sourceY) / 2; - const 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 ( - - - - ); -}; diff --git a/src/components/ConnectionLine/index.tsx b/src/components/ConnectionLine/index.tsx new file mode 100644 index 000000000..f232babd1 --- /dev/null +++ b/src/components/ConnectionLine/index.tsx @@ -0,0 +1,67 @@ +import React, { useEffect, useState, SVGAttributes } from 'react'; +import cx from 'classnames'; + +import { ElementId, Node, Transform, HandleElement } from '../../types'; + +interface ConnectionLineProps { + connectionSourceId: ElementId; + connectionPositionX: number; + connectionPositionY: number; + connectionLineType?: string | null; + nodes: Node[]; + transform: Transform; + connectionLineStyle?: SVGAttributes<{}>; + className?: string; +}; + +export default ({ + connectionSourceId, connectionLineStyle = {}, connectionPositionX, connectionPositionY, + connectionLineType, nodes = [], className, transform +}: ConnectionLineProps) => { + const [sourceNode, setSourceNode] = useState(null); + const hasHandleId = connectionSourceId.includes('__'); + const sourceIdSplitted = connectionSourceId.split('__'); + const nodeId = sourceIdSplitted[0]; + const handleId = hasHandleId ? sourceIdSplitted[1] : null; + + useEffect(() => { + const nextSourceNode = nodes.find(n => n.id === nodeId) || null; + setSourceNode(nextSourceNode); + }, []); + + if (!sourceNode) { + return null; + } + + const edgeClasses: string = cx('react-flow__edge', 'connection', className); + + const sourceHandle = handleId ? + sourceNode.__rg.handleBounds.source.find((d: HandleElement) => d.id === handleId) : + sourceNode.__rg.handleBounds.source[0]; + const sourceHandleX = sourceHandle ? sourceHandle.x + (sourceHandle.width / 2) : sourceNode.__rg.width / 2; + const sourceHandleY = sourceHandle ? sourceHandle.y + (sourceHandle.height / 2) : sourceNode.__rg.height; + const sourceX = sourceNode.__rg.position.x + sourceHandleX; + const sourceY = sourceNode.__rg.position.y + sourceHandleY; + + const targetX = (connectionPositionX - transform[0]) * (1 / transform[2]); + const targetY = (connectionPositionY - transform[1]) * (1 / transform[2]); + + let dAttr: string = ''; + + if (connectionLineType === 'bezier') { + const yOffset = Math.abs(targetY - sourceY) / 2; + const 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 ( + + + + ); +}; diff --git a/src/components/Edges/BezierEdge.js b/src/components/Edges/BezierEdge.tsx similarity index 87% rename from src/components/Edges/BezierEdge.js rename to src/components/Edges/BezierEdge.tsx index 713dc89d9..7d82f0122 100644 --- a/src/components/Edges/BezierEdge.js +++ b/src/components/Edges/BezierEdge.tsx @@ -1,9 +1,11 @@ import React, { memo } from 'react'; +import { EdgeBezierProps } from '../../types'; + export default memo(({ sourceX, sourceY, targetX, targetY, - sourcePosition, targetPosition, style = {} -}) => { + sourcePosition = 'bottom', targetPosition = 'top', style = {} +}: EdgeBezierProps) => { const yOffset = Math.abs(targetY - sourceY) / 2; const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; diff --git a/src/components/Edges/StepEdge.js b/src/components/Edges/StepEdge.tsx similarity index 71% rename from src/components/Edges/StepEdge.js rename to src/components/Edges/StepEdge.tsx index d63db3a0b..b1cbb9dab 100644 --- a/src/components/Edges/StepEdge.js +++ b/src/components/Edges/StepEdge.tsx @@ -1,10 +1,10 @@ import React, { memo } from 'react'; -export default memo((props) => { - const { - sourceX, sourceY, targetX, targetY, style = {} - } = props; +import { EdgeProps } from '../../types'; +export default memo(({ + sourceX, sourceY, targetX, targetY, style = {} +} : EdgeProps) => { const yOffset = Math.abs(targetY - sourceY) / 2; const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; diff --git a/src/components/Edges/StraightEdge.js b/src/components/Edges/StraightEdge.tsx similarity index 53% rename from src/components/Edges/StraightEdge.js rename to src/components/Edges/StraightEdge.tsx index de4679222..5e68bd4ea 100644 --- a/src/components/Edges/StraightEdge.js +++ b/src/components/Edges/StraightEdge.tsx @@ -1,10 +1,10 @@ import React, { memo } from 'react'; -export default memo((props) => { - const { - sourceX, sourceY, targetX, targetY, style = {} - } = props; +import { EdgeProps } from '../../types'; +export default memo(({ + sourceX, sourceY, targetX, targetY, style = {} +}: EdgeProps) => { return ( { - const EdgeWrapper = memo((props) => { - const { - id, source, target, type, - animated, selected, onClick - } = props; - const edgeClasses = cx('react-flow__edge', { selected, animated }); - const onEdgeClick = (evt) => { - if (inInputDOMNode(evt)) { - return false; - } - - store.dispatch.setSelectedElements({ id, source, target }); - onClick({ id, source, target, type }); - }; - - return ( - - - - ); - }); - - EdgeWrapper.displayName = 'EdgeWrapper'; - EdgeWrapper.whyDidYouRender = false; - - return EdgeWrapper; -}; diff --git a/src/components/Edges/wrapEdge.tsx b/src/components/Edges/wrapEdge.tsx new file mode 100644 index 000000000..3139e3274 --- /dev/null +++ b/src/components/Edges/wrapEdge.tsx @@ -0,0 +1,46 @@ +import React, { memo, MouseEvent, ComponentType } from 'react'; +import cx from 'classnames'; + +import { isInputDOMNode } from '../../utils'; +import store from '../../store'; +import { EdgeWrapperProps } from '../../types'; + +export default (EdgeComponent: ComponentType) => { + const EdgeWrapper = memo(({ + id, source, target, type, + animated, selected, onClick, + ...rest + }: EdgeWrapperProps) => { + const edgeClasses = cx('react-flow__edge', { selected, animated }); + const onEdgeClick = (evt: MouseEvent) => { + if (isInputDOMNode(evt)) { + return false; + } + + store.dispatch.setSelectedElements({ id, source, target }); + onClick({ id, source, target, type }); + }; + + return ( + + + + ); + }); + + EdgeWrapper.displayName = 'EdgeWrapper'; + + return EdgeWrapper; +}; diff --git a/src/components/Handle/BaseHandle.js b/src/components/Handle/BaseHandle.tsx similarity index 57% rename from src/components/Handle/BaseHandle.js rename to src/components/Handle/BaseHandle.tsx index 141827c03..3680763c3 100644 --- a/src/components/Handle/BaseHandle.js +++ b/src/components/Handle/BaseHandle.tsx @@ -1,35 +1,69 @@ -import React, { memo } from 'react'; +import React, { memo, MouseEvent as ReactMouseEvent } from 'react'; import cx from 'classnames'; -function onMouseDown(evt, { nodeId, setSourceId, setPosition, onConnect, isTarget, isValidConnection }) { - const containerBounds = document.querySelector('.react-flow').getBoundingClientRect(); - let recentHoveredHandle = null; +import { HandleType, ElementId, Position, XYPosition, OnConnectFunc, Connection } from '../../types'; + +type ValidConnectionFunc = (connection: Connection) => boolean; + +interface BaseHandleProps { + type: HandleType; + nodeId: ElementId; + onConnect: OnConnectFunc; + position: Position; + setSourceId: (nodeId: ElementId) => void; + setPosition: (pos: XYPosition) => void; + isValidConnection: ValidConnectionFunc; + id?: ElementId | boolean; + className?: string; +}; + +type Result = { + elementBelow: Element; + isValid: boolean; + connection: Connection; + isHoveringHandle: boolean; +}; + +function onMouseDown( + evt: ReactMouseEvent, nodeId: ElementId, setSourceId: (nodeId: ElementId) => void, setPosition: (pos: XYPosition) => any, + onConnect: OnConnectFunc, isTarget: boolean, isValidConnection: ValidConnectionFunc +): void { + const reactFlowNode = document.querySelector('.react-flow'); + + if (!reactFlowNode) { + return null; + } + + const containerBounds = reactFlowNode.getBoundingClientRect(); + let recentHoveredHandle: Element = null; setPosition({ - x: evt.clientX - containerBounds.x, - y: evt.clientY - containerBounds.y, + x: evt.clientX - containerBounds.left, + y: evt.clientY - containerBounds.top, }); setSourceId(nodeId); function resetRecentHandle() { - if (recentHoveredHandle) { - recentHoveredHandle.classList.remove('valid'); - recentHoveredHandle.classList.remove('connecting'); + if (!recentHoveredHandle) { + return false; } + + 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) { + function checkElementBelowIsValid(evt: MouseEvent) { const elementBelow = document.elementFromPoint(evt.clientX, evt.clientY); - const result = { + const result: Result = { elementBelow, isValid: false, - connection: null, + connection: { source: null, target: null }, isHoveringHandle: false }; if (elementBelow && (elementBelow.classList.contains('target') || elementBelow.classList.contains('source'))) { - let connection = null; + let connection: Connection = { source: null, target: null }; if (isTarget) { const sourceId = elementBelow.getAttribute('data-nodeid'); @@ -49,10 +83,10 @@ function onMouseDown(evt, { nodeId, setSourceId, setPosition, onConnect, isTarg return result; } - function onMouseMove(evt) { + function onMouseMove(evt: MouseEvent) { setPosition({ - x: evt.clientX - containerBounds.x, - y: evt.clientY - containerBounds.y, + x: evt.clientX - containerBounds.left, + y: evt.clientY - containerBounds.top, }); const { connection, elementBelow, isValid, isHoveringHandle } = checkElementBelowIsValid(evt); @@ -70,7 +104,7 @@ function onMouseDown(evt, { nodeId, setSourceId, setPosition, onConnect, isTarg } } - function onMouseUp(evt) { + function onMouseUp(evt: MouseEvent) { const { connection, isValid } = checkElementBelowIsValid(evt); if (isValid) { @@ -92,7 +126,7 @@ const BaseHandle = memo(({ type, nodeId, onConnect, position, setSourceId, setPosition, className, id = false, isValidConnection, ...rest -}) => { +}: BaseHandleProps) => { const isTarget = type === 'target'; const handleClasses = cx( 'react-flow__handle', @@ -108,16 +142,15 @@ const BaseHandle = memo(({ data-nodeid={nodeIdWithHandleId} data-handlepos={position} className={handleClasses} - onMouseDown={evt => onMouseDown(evt, { - nodeId: nodeIdWithHandleId, setSourceId, setPosition, + onMouseDown={evt => onMouseDown(evt, + nodeIdWithHandleId, setSourceId, setPosition, onConnect, isTarget, isValidConnection - })} + )} {...rest} /> ); }); BaseHandle.displayName = 'BaseHandle'; -BaseHandle.whyDidYouRender = false; export default BaseHandle; diff --git a/src/components/Handle/index.js b/src/components/Handle/index.tsx similarity index 50% rename from src/components/Handle/index.js rename to src/components/Handle/index.tsx index 791f19f05..578c223f9 100644 --- a/src/components/Handle/index.js +++ b/src/components/Handle/index.tsx @@ -1,18 +1,29 @@ import React, { memo, useContext } from 'react'; -import PropTypes from 'prop-types'; -import { useStoreActions, useStoreState } from 'easy-peasy'; +import { useStoreActions, useStoreState } from '../../store/hooks'; import BaseHandle from './BaseHandle'; import NodeIdContext from '../../contexts/NodeIdContext' -const Handle = memo(({ onConnect, ...rest }) => { - const nodeId = useContext(NodeIdContext); +import { HandleType, ElementId, Position, OnConnectParams, OnConnectFunc } from '../../types'; + +interface HandleProps { + type: HandleType, + position: Position, + onConnect?: OnConnectFunc, + isValidConnection?: () => boolean +}; + +const Handle = memo(({ + onConnect = _ => {}, type = 'source', position = 'top', isValidConnection = () => true, + ...rest +}: HandleProps) => { + const nodeId = useContext(NodeIdContext) as ElementId; const { setPosition, setSourceId } = useStoreActions(a => ({ setPosition: a.setConnectionPosition, setSourceId: a.setConnectionSourceId })); const onConnectAction = useStoreState(s => s.onConnect); - const onConnectExtended = (params) => { + const onConnectExtended = (params: OnConnectParams) => { onConnectAction(params); onConnect(params); }; @@ -23,6 +34,9 @@ const Handle = memo(({ onConnect, ...rest }) => { setPosition={setPosition} setSourceId={setSourceId} onConnect={onConnectExtended} + type={type} + position={position} + isValidConnection={isValidConnection} {...rest} /> ); @@ -30,18 +44,4 @@ const Handle = memo(({ onConnect, ...rest }) => { Handle.displayName = 'Handle'; -Handle.propTypes = { - type: PropTypes.oneOf(['source', 'target']), - position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']), - onConnect: PropTypes.func, - isValidConnection: PropTypes.func -}; - -Handle.defaultProps = { - type: 'source', - position: 'top', - onConnect: () => {}, - isValidConnection: () => true -}; - export default Handle; diff --git a/src/components/Nodes/DefaultNode.js b/src/components/Nodes/DefaultNode.tsx similarity index 62% rename from src/components/Nodes/DefaultNode.js rename to src/components/Nodes/DefaultNode.tsx index a454cbd41..6be13acd7 100644 --- a/src/components/Nodes/DefaultNode.js +++ b/src/components/Nodes/DefaultNode.tsx @@ -1,15 +1,16 @@ -import React from 'react'; +import React, { CSSProperties } from 'react'; import Handle from '../../components/Handle'; +import { NodeProps } from '../../types'; -const nodeStyles = { +const nodeStyles: CSSProperties = { background: '#ff6060', padding: 10, borderRadius: 5, width: 150 }; -export default ({ data, style }) => ( +export default ({ data, style }: NodeProps) => (
{data.label} diff --git a/src/components/Nodes/InputNode.js b/src/components/Nodes/InputNode.tsx similarity index 58% rename from src/components/Nodes/InputNode.js rename to src/components/Nodes/InputNode.tsx index 081034e5a..c24149162 100644 --- a/src/components/Nodes/InputNode.js +++ b/src/components/Nodes/InputNode.tsx @@ -1,15 +1,16 @@ -import React from 'react'; +import React, { CSSProperties } from 'react'; import Handle from '../../components/Handle'; +import { NodeProps } from '../../types'; -const nodeStyles = { +const nodeStyles: CSSProperties = { background: '#9999ff', padding: 10, borderRadius: 5, width: 150 }; -export default ({ data, style }) => ( +export default ({ data, style }: NodeProps) => (
{data.label} diff --git a/src/components/Nodes/OutputNode.js b/src/components/Nodes/OutputNode.tsx similarity index 58% rename from src/components/Nodes/OutputNode.js rename to src/components/Nodes/OutputNode.tsx index 49fdfacd8..0f85aa35f 100644 --- a/src/components/Nodes/OutputNode.js +++ b/src/components/Nodes/OutputNode.tsx @@ -1,15 +1,16 @@ -import React from 'react'; +import React, { CSSProperties } from 'react'; import Handle from '../../components/Handle'; +import { NodeProps } from '../../types'; -const nodeStyles = { +const nodeStyles: CSSProperties = { background: '#55dd99', padding: 10, borderRadius: 5, width: 150 }; -export default ({ data, style }) => ( +export default ({ data, style }: NodeProps) => (
{data.label} diff --git a/src/components/Nodes/wrapNode.js b/src/components/Nodes/wrapNode.js deleted file mode 100644 index 0d6bc16fc..000000000 --- a/src/components/Nodes/wrapNode.js +++ /dev/null @@ -1,166 +0,0 @@ -import React, { useEffect, useRef, useState, memo } from 'react'; -import ReactDraggable from 'react-draggable'; -import cx from 'classnames'; - -import { getDimensions, inInputDOMNode } from '../../utils'; -import { Provider } from '../../contexts/NodeIdContext'; -import store from '../../store'; - -const isHandle = e => ( - e.target.className && - e.target.className.includes && - (e.target.className.includes('source') || e.target.className.includes('target')) -); - -const hasResizeObserver = !!window.ResizeObserver; - -const getHandleBounds = (sel, nodeElement, parentBounds, k) => { - const handles = nodeElement.querySelectorAll(sel); - - if (!handles || !handles.length) { - return null; - } - - return [].map.call(handles, (handle) => { - const bounds = handle.getBoundingClientRect(); - const dimensions = getDimensions(handle); - const nodeIdAttr = handle.getAttribute('data-nodeid'); - const handlePosition = handle.getAttribute('data-handlepos'); - const nodeIdSplitted = nodeIdAttr.split('__'); - - let handleId = null; - - if (nodeIdSplitted) { - handleId = nodeIdSplitted.length ? nodeIdSplitted[1] : nodeIdSplitted; - } - - return { - id: handleId, - position: handlePosition, - x: (bounds.x - parentBounds.x) * (1 / k), - y: (bounds.y - parentBounds.y) * (1 / k), - ...dimensions - }; - }); -}; - -const onStart = (evt, { setOffset, onClick, id, type, data, position, transform }) => { - if (inInputDOMNode(evt) || isHandle(evt)) { - return false; - } - - const scaledClient = { - x: evt.clientX * (1 / [transform[2]]), - y: evt.clientY * (1 / [transform[2]]) - }; - const offsetX = scaledClient.x - position.x - transform[0]; - const offsetY = scaledClient.y - position.y - transform[1]; - const node = { id, type, position, data }; - - store.dispatch.setSelectedElements({ id, type }); - setOffset({ x: offsetX, y: offsetY }); - onClick(node); -}; - -const onDrag = (evt, { setDragging, id, offset, transform }) => { - const scaledClient = { - x: evt.clientX * (1 / transform[2]), - y: evt.clientY * (1 / transform[2]) - }; - - setDragging(true); - store.dispatch.updateNodePos({ id, pos: { - x: scaledClient.x - transform[0] - offset.x, - y: scaledClient.y - transform[1] - offset.y - }}); -}; - -const onStop = ({ onNodeDragStop, setDragging, isDragging, id, type, position, data }) => { - if (!isDragging) { - return false; - } - - setDragging(false); - onNodeDragStop({ - id, type, position, data - }); -}; - -export default NodeComponent => { - const NodeWrapper = memo((props) => { - const nodeElement = useRef(null); - const [offset, setOffset] = useState({ x: 0, y: 0 }); - const [isDragging, setDragging] = useState(false); - const { - id, type, data, transform, xPos, yPos, selected, - onClick, onNodeDragStop, style - } = props; - - const position = { x: xPos, y: yPos }; - const nodeClasses = cx('react-flow__node', { selected }); - const nodeStyle = { zIndex: selected ? 10 : 3, transform: `translate(${xPos}px,${yPos}px)` }; - - const updateNode = () => { - const storeState = store.getState() - const bounds = nodeElement.current.getBoundingClientRect(); - const dimensions = getDimensions(nodeElement.current); - const handleBounds = { - source: getHandleBounds('.source', nodeElement.current, bounds, storeState.transform[2]), - target: getHandleBounds('.target', nodeElement.current, bounds, storeState.transform[2]) - }; - store.dispatch.updateNodeData({ id, ...dimensions, handleBounds }); - } - - useEffect(() => { - updateNode(); - - let resizeObserver = null; - - if (hasResizeObserver) { - resizeObserver = new ResizeObserver(entries => { - for (let entry of entries) { - updateNode(); - } - }); - - resizeObserver.observe(nodeElement.current); - } - - return () => { - if (hasResizeObserver && resizeObserver) { - resizeObserver.unobserve(nodeElement.current); - } - } - }, []); - - return ( - onStart(evt, { onClick, id, type, data, setOffset, transform, position })} - onDrag={evt => onDrag(evt, { setDragging, id, offset, transform })} - onStop={() => onStop({ onNodeDragStop, isDragging, setDragging, id, type, position, data })} - scale={transform[2]} - > -
- - - -
-
- ); - }); - - NodeWrapper.displayName = 'NodeWrapper'; - NodeWrapper.whyDidYouRender = false; - - return NodeWrapper; -}; diff --git a/src/components/Nodes/wrapNode.tsx b/src/components/Nodes/wrapNode.tsx new file mode 100644 index 000000000..151409f92 --- /dev/null +++ b/src/components/Nodes/wrapNode.tsx @@ -0,0 +1,180 @@ +import React, { useEffect, useRef, useState, memo, ComponentType } from 'react'; +import { DraggableCore, DraggableEvent } from 'react-draggable'; +import cx from 'classnames'; +import { ResizeObserver } from 'resize-observer'; + +import { getDimensions, isInputDOMNode } from '../../utils'; +import { Provider } from '../../contexts/NodeIdContext'; +import store from '../../store'; +import { NodeComponentProps, Node, XYPosition, HandleElement, Position, Transform, ElementId } from '../../types'; + +const isHandle = (evt: MouseEvent | DraggableEvent) => { + const target = evt.target as HTMLElement; + + return ( + target.className && + target.className.includes && + (target.className.includes('source') || target.className.includes('target')) + ); +}; + +const getHandleBounds = ( + selector: string, nodeElement: HTMLDivElement, parentBounds: ClientRect | DOMRect, k: number +): HandleElement => { + const handles = nodeElement.querySelectorAll(selector); + + if (!handles || !handles.length) { + return null; + } + + return [].map.call(handles, (handle: HTMLDivElement): HandleElement => { + const bounds = handle.getBoundingClientRect(); + const dimensions = getDimensions(handle); + const nodeIdAttr = handle.getAttribute('data-nodeid'); + const handlePosition = handle.getAttribute('data-handlepos') as unknown as Position; + const nodeIdSplitted = nodeIdAttr.split('__'); + + let handleId = null; + + if (nodeIdSplitted) { + handleId = (nodeIdSplitted.length ? nodeIdSplitted[1] : nodeIdSplitted) as string; + } + + return { + id: handleId, + position: handlePosition, + x: (bounds.left - parentBounds.left) * (1 / k), + y: (bounds.top - parentBounds.top) * (1 / k), + ...dimensions + }; + }); +}; + +const onStart = ( + evt: MouseEvent, onClick: (node: Node) => void, id: ElementId, type: string, + data: any, setOffset: (pos: XYPosition) => void, transform: Transform, position: XYPosition +): false | void => { + if (isInputDOMNode(evt) || isHandle(evt)) { + return false; + } + + const scaledClient: XYPosition = { + x: evt.clientX * (1 / transform[2]), + y: evt.clientY * (1 / transform[2]) + }; + const offsetX = scaledClient.x - position.x - transform[0]; + const offsetY = scaledClient.y - position.y - transform[1]; + const node = { id, type, position, data }; + + store.dispatch.setSelectedElements({ id, type }); + setOffset({ x: offsetX, y: offsetY }); + onClick(node); +}; + +const onDrag = ( + evt: MouseEvent, setDragging: (isDragging: boolean) => void, id: ElementId, offset: XYPosition, + transform: Transform +): void => { + const scaledClient = { + x: evt.clientX * (1 / transform[2]), + y: evt.clientY * (1 / transform[2]) + }; + + setDragging(true); + store.dispatch.updateNodePos({ id, pos: { + x: scaledClient.x - transform[0] - offset.x, + y: scaledClient.y - transform[1] - offset.y + }}); +}; + +const onStop = ( + onNodeDragStop: (params: Node) => void, isDragging: boolean, setDragging: (isDragging: boolean) => void, id: ElementId, + type: string, position: XYPosition, data: any +): void => { + if (isDragging) { + setDragging(false); + onNodeDragStop({ + id, type, position, data + }); + } +}; + +export default (NodeComponent: ComponentType) => { + const NodeWrapper = memo(({ + id, type, data, transform, + xPos, yPos, selected, onClick, + onNodeDragStop, style + }: NodeComponentProps) => { + const nodeElement = useRef(null); + const [offset, setOffset] = useState({ x: 0, y: 0 }); + const [isDragging, setDragging] = useState(false); + + const position = { x: xPos, y: yPos }; + const nodeClasses = cx('react-flow__node', { selected }); + const nodeStyle = { zIndex: selected ? 10 : 3, transform: `translate(${xPos}px,${yPos}px)` }; + + const updateNode = () => { + if (!nodeElement.current) { + return false; + } + + const storeState = store.getState() + const bounds = nodeElement.current.getBoundingClientRect(); + const dimensions = getDimensions(nodeElement.current); + const handleBounds = { + source: getHandleBounds('.source', nodeElement.current, bounds, storeState.transform[2]), + target: getHandleBounds('.target', nodeElement.current, bounds, storeState.transform[2]) + }; + store.dispatch.updateNodeData({ id, ...dimensions, handleBounds }); + }; + + useEffect(() => { + if (nodeElement.current) { + updateNode(); + + const resizeObserver = new ResizeObserver(entries => { + for (let _ of entries) { + updateNode(); + } + }); + + resizeObserver.observe(nodeElement.current); + + return () => { + if (resizeObserver && nodeElement.current) { + resizeObserver.unobserve(nodeElement.current); + } + } + } + }, [nodeElement.current]); + + return ( + onStart(evt as MouseEvent, onClick, id, type, data, setOffset, transform, position)} + onDrag={evt => onDrag(evt as MouseEvent, setDragging, id, offset, transform)} + onStop={() => onStop(onNodeDragStop, isDragging, setDragging, id, type, position, data)} + scale={transform[2]} + > +
+ + + +
+
+ ); + }); + + NodeWrapper.displayName = 'NodeWrapper'; + + return NodeWrapper; +}; diff --git a/src/components/NodesSelection/index.js b/src/components/NodesSelection/index.tsx similarity index 64% rename from src/components/NodesSelection/index.js rename to src/components/NodesSelection/index.tsx index f4bd69588..c7689c3e8 100644 --- a/src/components/NodesSelection/index.js +++ b/src/components/NodesSelection/index.tsx @@ -1,13 +1,14 @@ import React, { useState, memo } from 'react'; import ReactDraggable from 'react-draggable'; -import { useStoreState, useStoreActions } from 'easy-peasy'; +import { useStoreState, useStoreActions } from '../../store/hooks'; import { isNode } from '../../utils/graph'; +import { Node, Elements, XYPosition } from '../../types'; -function getStartPositions(elements) { +function getStartPositions(elements: Elements) { return elements .filter(isNode) - .reduce((res, node) => { + .reduce((res, node: Node) => { const startPosition = { x: node.__rg.position.x || node.position.x, y: node.__rg.position.y || node.position.x @@ -31,31 +32,33 @@ export default memo(() => { const [x, y, k] = state.transform; const position = state.selectedNodesBbox; - const onStart = (evt) => { - const scaledClient = { + const onStart = (evt: MouseEvent) => { + const scaledClient: XYPosition = { x: evt.clientX * (1 / k), y: evt.clientY * (1 / k) }; - const offsetX = scaledClient.x - position.x - x; - const offsetY = scaledClient.y - position.y - y; + const offsetX: number = scaledClient.x - position.x - x; + const offsetY: number = scaledClient.y - position.y - y; const startPositions = getStartPositions(state.selectedElements); setOffset({ x: offsetX, y: offsetY }); setStartPositions(startPositions); }; - const onDrag = (evt) => { - const scaledClient = { + const onDrag = (evt: MouseEvent) => { + const scaledClient: XYPosition = { x: evt.clientX * (1 / k), y: evt.clientY * (1 / k) }; - state.selectedElements.filter(isNode).forEach(node => { - updateNodePos({ id: node.id, pos: { - x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - x , - y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - y - }}); - }); + state.selectedElements + .filter(isNode) + .forEach((node: Node) => { + updateNodePos({ id: node.id, pos: { + x: startPositions[node.id].x + scaledClient.x - position.x - offset.x - x , + y: startPositions[node.id].y + scaledClient.y - position.y - offset.y - y + }}); + }); }; return ( @@ -67,8 +70,8 @@ export default memo(() => { > onStart(evt)} + onDrag={(evt: MouseEvent) => onDrag(evt)} >
{ const setNodesSelection = useStoreActions(a => a.setNodesSelection); useEffect(() => { - function onMouseDown(evt) { + function onMouseDown(evt: MouseEvent) { const mousePos = getMousePosition(evt); + if (!mousePos) { + return false; + } setRect((currentRect) => ({ ...currentRect, @@ -43,13 +53,17 @@ export default memo(() => { setSelection(true); } - function onMouseMove(evt) { + function onMouseMove(evt: MouseEvent) { setRect((currentRect) => { if (!currentRect.draw) { return currentRect; } const mousePos = getMousePosition(evt); + if (!mousePos) { + return currentRect; + } + const negativeX = mousePos.x < currentRect.startX; const negativeY = mousePos.y < currentRect.startY; const nextRect = { @@ -94,7 +108,7 @@ export default memo(() => { className="react-flow__selectionpane" ref={selectionPane} > - {(rect.draw || rect.fixed) && ( + {rect.draw && (
{ - const lineCountX = Math.ceil(width / gap) + 1; - const lineCountY = Math.ceil(height / gap) + 1; - - const xValues = Array.from({length: lineCountX}, (_, i) => `M${i * gap + xOffset} 0 V${height}`); - const yValues = Array.from({length: lineCountY}, (_, i) => `M0 ${i * gap + yOffset} H${width}`); - - return [...xValues, ...yValues].join(' '); -}; - -const createGridDots = (width, height, xOffset, yOffset, gap, size) => { - const lineCountX = Math.ceil(width / gap) + 1; - const lineCountY = Math.ceil(height / gap) + 1; - - const values = Array.from({length: lineCountX}, (_, col) => { - const x = col * gap + xOffset; - return Array.from({length: lineCountY},(_,row)=>{ - const y = row * gap + yOffset; - return `M${x} ${y-size} l${size} ${size} l${-size} ${size} l${-size} ${-size}z` - }).join(' '); - }); - - return values.join(' '); -}; - -const Grid = memo(({gap, color, size, style, className, backgroundType}) => { - const { - width, - height, - transform: [x, y, scale], - } = useStoreState(s => s); - - const gridClasses = classnames('react-flow__grid', className); - const scaledGap = gap * scale; - - const xOffset = x % scaledGap; - const yOffset = y % scaledGap; - const isLines = backgroundType === 'lines'; - const path = isLines - ? createGridLines(width, height, xOffset, yOffset, scaledGap) - : createGridDots(width, height, xOffset, yOffset, scaledGap, size); - - const fill = isLines ? 'none' : color; - const stroke = isLines ? color : 'none'; - - return ( - - - - ); -}); - -Grid.displayName = 'Grid'; - -Grid.propTypes = { - gap: PropTypes.number, - color: PropTypes.string, - size: PropTypes.number, - style: PropTypes.object, - className: PropTypes.string, - backgroundType: PropTypes.oneOf(['lines', 'dots']), -}; - -Grid.defaultProps = { - gap: 24, - color: '#aaa', - size: .5, - style: {}, - className: null, - backgroundType: 'dots', -}; - -export default Grid; diff --git a/src/container/BackgroundRenderer/index.js b/src/container/BackgroundRenderer/index.js deleted file mode 100644 index 11858770e..000000000 --- a/src/container/BackgroundRenderer/index.js +++ /dev/null @@ -1,34 +0,0 @@ -import React, { memo } from 'react'; -import PropTypes from 'prop-types'; - -import Grid from './Grid'; - -const bgComponents = { - lines: Grid, - dots: Grid -}; - -const BackgroundRenderer = memo(({ - backgroundType, ...rest -}) => { - const BackgroundComponent = bgComponents[backgroundType]; - - return ( - - ); -}); - -BackgroundRenderer.displayName = 'BackgroundRenderer'; - -BackgroundRenderer.propTypes = { - backgroundType: PropTypes.oneOf(['lines', 'dots']) -}; - -BackgroundRenderer.defaultProps = { - backgroundType: 'dots' -}; - -export default BackgroundRenderer; diff --git a/src/container/EdgeRenderer/index.js b/src/container/EdgeRenderer/index.tsx similarity index 64% rename from src/container/EdgeRenderer/index.js rename to src/container/EdgeRenderer/index.tsx index a6272873e..ba5eb21ab 100644 --- a/src/container/EdgeRenderer/index.js +++ b/src/container/EdgeRenderer/index.tsx @@ -1,10 +1,36 @@ -import React, { memo } from 'react'; -import { useStoreState } from 'easy-peasy'; +import React, { memo, SVGAttributes } from 'react'; -import ConnectionLine from '../../components/ConnectionLine'; +import { useStoreState } from '../../store/hooks'; +import ConnectionLine from '../../components/ConnectionLine/index'; import { isEdge } from '../../utils/graph'; - -function getHandlePosition(position, node, handle = null) { +import { XYPosition, Position, Edge, Node, ElementId, Transform, HandleElement } from '../../types'; + +interface EdgeRendererProps { + width: number; + height: number; + edgeTypes: any; + connectionLineStyle?: SVGAttributes<{}>; + connectionLineType?: string; + onElementClick?: () => void; +}; + +interface EdgeRendererState { + nodes: Node[]; + edges: Edge[]; + transform: Transform; + selectedElements: any; + connectionSourceId: ElementId | null; + position: XYPosition; +}; + +interface EdgePositions { + sourceX: number; + sourceY: number; + targetX: number; + targetY: number; +}; + +function getHandlePosition(position: Position, node: Node, handle: any | null = null): XYPosition { if (!handle) { switch (position) { case 'top': return { @@ -24,6 +50,8 @@ function getHandlePosition(position, node, handle = null) { y: node.__rg.height / 2 }; } + + return null; } switch (position) { @@ -46,7 +74,7 @@ function getHandlePosition(position, node, handle = null) { } } -function getHandle(bounds, handleId) { +function getHandle(bounds: HandleElement[], handleId: ElementId): HandleElement | null { let handle = null; if (!bounds) { @@ -64,7 +92,10 @@ function getHandle(bounds, handleId) { return handle; } -function getEdgePositions({ sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition }) { +function getEdgePositions( + sourceNode: Node, sourceHandle: HandleElement, sourcePosition: Position, + targetNode: Node, targetHandle: HandleElement, targetPosition: Position +): EdgePositions { const sourceHandlePos = getHandlePosition(sourcePosition, sourceNode, sourceHandle) const sourceX = sourceNode.__rg.position.x + sourceHandlePos.x; const sourceY = sourceNode.__rg.position.y + sourceHandlePos.y; @@ -78,17 +109,17 @@ function getEdgePositions({ sourceNode, sourceHandle, sourcePosition, targetNode }; } -function renderEdge(e, props, state) { - const edgeType = e.type || 'default'; +function renderEdge(edge: Edge, props: EdgeRendererProps, state: EdgeRendererState) { + const edgeType = edge.type || 'default'; - const hasSourceHandleId = e.source.includes('__'); - const hasTargetHandleId = e.target.includes('__'); + const hasSourceHandleId = edge.source.includes('__'); + const hasTargetHandleId = edge.target.includes('__'); - const sourceId = hasSourceHandleId ? e.source.split('__')[0] : e.source; - const targetId = hasTargetHandleId ? e.target.split('__')[0] : e.target; + const sourceId = hasSourceHandleId ? edge.source.split('__')[0] : edge.source; + const targetId = hasTargetHandleId ? edge.target.split('__')[0] : edge.target; - const sourceHandleId = hasSourceHandleId ? e.source.split('__')[1] : null; - const targetHandleId = hasTargetHandleId ? e.target.split('__')[1] : null; + const sourceHandleId = hasSourceHandleId ? edge.source.split('__')[1] : null; + const targetHandleId = hasTargetHandleId ? edge.target.split('__')[1] : null; const sourceNode = state.nodes.find(n => n.id === sourceId); const targetNode = state.nodes.find(n => n.id === targetId); @@ -107,23 +138,23 @@ function renderEdge(e, props, state) { const sourcePosition = sourceHandle ? sourceHandle.position : 'bottom'; const targetPosition = targetHandle ? targetHandle.position : 'top'; - const { sourceX, sourceY, targetX, targetY } = getEdgePositions({ + const { sourceX, sourceY, targetX, targetY } = getEdgePositions( sourceNode, sourceHandle, sourcePosition, targetNode, targetHandle, targetPosition - }); + ); const selected = state.selectedElements .filter(isEdge) - .find(elm => elm.source === sourceId && elm.target === targetId); + .find((elm: Edge) => elm.source === sourceId && elm.target === targetId); return ( { - const state = useStoreState(s => ({ +const EdgeRenderer = memo(({ + width, height, connectionLineStyle, connectionLineType, ...rest +}: EdgeRendererProps) => { + const state: EdgeRendererState = useStoreState(s => ({ nodes: s.nodes, edges: s.edges, transform: s.transform, @@ -147,10 +180,6 @@ const EdgeRenderer = memo((props) => { connectionSourceId: s.connectionSourceId, position: s.connectionPosition })); - const { - width, height, connectionLineStyle, connectionLineType - } = props; - if (!width) { return null; } @@ -165,7 +194,7 @@ const EdgeRenderer = memo((props) => { className="react-flow__edges" > - {edges.map(e => renderEdge(e, props, state))} + {edges.map((e: Edge) => renderEdge(e, { width, height, connectionLineStyle, connectionLineType, ...rest }, state))} {connectionSourceId && ( !['default', 'bezier'].includes(k)) - .reduce((res, key) => { - res[key] = wrapEdge(edgeTypes[key] ||BezierEdge); - - return res; - }, {}); - - return { - ...standardTypes, - ...specialTypes - }; -} diff --git a/src/container/EdgeRenderer/utils.ts b/src/container/EdgeRenderer/utils.ts new file mode 100644 index 000000000..190dba394 --- /dev/null +++ b/src/container/EdgeRenderer/utils.ts @@ -0,0 +1,28 @@ +import { ComponentType } from 'react'; + +import StraightEdge from '../../components/Edges/StraightEdge'; +import BezierEdge from '../../components/Edges/BezierEdge'; +import wrapEdge from '../../components/Edges/wrapEdge'; + +import { EdgeTypesType, EdgeWrapperProps } from '../../types'; + +export function createEdgeTypes(edgeTypes: EdgeTypesType): EdgeTypesType{ + const standardTypes: EdgeTypesType = { + default: wrapEdge((edgeTypes.default || BezierEdge) as ComponentType), + straight: wrapEdge((edgeTypes.bezier || StraightEdge) as ComponentType) + }; + + const specialTypes: EdgeTypesType = Object + .keys(edgeTypes) + .filter(k => !['default', 'bezier'].includes(k)) + .reduce((res, key) => { + res[key] = wrapEdge((edgeTypes[key] || BezierEdge) as ComponentType); + + return res; + }, {}); + + return { + ...standardTypes, + ...specialTypes + }; +} diff --git a/src/container/GraphView/index.js b/src/container/GraphView/index.tsx similarity index 74% rename from src/container/GraphView/index.js rename to src/container/GraphView/index.tsx index 5cd415597..f138147bb 100644 --- a/src/container/GraphView/index.js +++ b/src/container/GraphView/index.tsx @@ -1,17 +1,38 @@ -import React, { useEffect, useRef, memo } from 'react'; -import { useStoreState, useStoreActions } from 'easy-peasy'; +import React, { useEffect, useRef, memo, SVGAttributes } from 'react'; +import { useStoreState, useStoreActions } from '../../store/hooks'; import NodeRenderer from '../NodeRenderer'; import EdgeRenderer from '../EdgeRenderer'; -import BackgroundRenderer from '../BackgroundRenderer'; import UserSelection from '../../components/UserSelection'; import NodesSelection from '../../components/NodesSelection'; +import BackgroundGrid from '../../components/BackgroundGrid'; import useKeyPress from '../../hooks/useKeyPress'; import useD3Zoom from '../../hooks/useD3Zoom'; import useGlobalKeyHandler from '../../hooks/useGlobalKeyHandler'; import useElementUpdater from '../../hooks/useElementUpdater' import { getDimensions } from '../../utils'; import { fitView, zoomIn, zoomOut } from '../../utils/graph'; +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, +}; const GraphView = memo(({ nodeTypes, edgeTypes, onMove, onLoad, @@ -19,9 +40,9 @@ const GraphView = memo(({ selectionKeyCode, onElementsRemove, deleteKeyCode, elements, showBackground, backgroundGap, backgroundColor, backgroundType, onConnect -}) => { - const zoomPane = useRef(); - const rendererNode = useRef(); +}: GraphViewProps) => { + const zoomPane = useRef(null); + const rendererNode = useRef(null); const state = useStoreState(s => ({ width: s.width, height: s.height, @@ -65,12 +86,12 @@ const GraphView = memo(({ }, [state.d3Initialised]); useGlobalKeyHandler({ onElementsRemove, deleteKeyCode }); - useElementUpdater({ elements }); + useElementUpdater(elements); return (
{showBackground && ( - e.id) - .includes(d.id); - - return ( - - ); -} - -const NodeRenderer = memo((props) => { - const state = useStoreState(s => ({ - nodes: s.nodes, - transform: s.transform, - selectedElements: s.selectedElements - })); - - const { transform, nodes } = state; - const transformStyle = { transform : `translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})` }; - - return ( -
- {nodes.map(d => renderNode(d, props, state))} -
- ); -}); - -NodeRenderer.displayName = 'NodeRenderer'; -NodeRenderer.whyDidYouRender = false; - -export default NodeRenderer; diff --git a/src/container/NodeRenderer/index.tsx b/src/container/NodeRenderer/index.tsx new file mode 100644 index 000000000..903f64d28 --- /dev/null +++ b/src/container/NodeRenderer/index.tsx @@ -0,0 +1,71 @@ +import React, { memo, ComponentType } from 'react'; + +import { useStoreState } from '../../store/hooks'; +import { isNode } from '../../utils/graph'; +import { Node, Transform, NodeTypesType, NodeComponentProps, } from '../../types'; + +interface NodeRendererProps { + nodeTypes: NodeTypesType; + onElementClick: () => void; + onNodeDragStop: () => void; +}; + +interface NodeRendererState { + nodes: Node[]; + transform: Transform; + selectedElements: any; +}; + +function renderNode(node: Node, props: NodeRendererProps, state: NodeRendererState) { + const nodeType = node.type || 'default'; + + if (!props.nodeTypes[nodeType]) { + console.warn(`No node type found for type "${nodeType}". Using fallback type "default".`); + } + + const NodeComponent = (props.nodeTypes[nodeType] || props.nodeTypes.default) as ComponentType; + const selected = state.selectedElements + .filter(isNode) + .map((e: Node) => e.id) + .includes(node.id); + + return ( + + ); +} + +const NodeRenderer = memo((props: NodeRendererProps) => { + const state: NodeRendererState = useStoreState(s => ({ + nodes: s.nodes, + transform: s.transform, + selectedElements: s.selectedElements + })); + + const { transform, nodes } = state; + const transformStyle = { transform : `translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})` }; + + return ( +
+ {nodes.map(node => renderNode(node, props, state))} +
+ ); +}); + +NodeRenderer.displayName = 'NodeRenderer'; + +export default NodeRenderer; diff --git a/src/container/NodeRenderer/utils.js b/src/container/NodeRenderer/utils.js deleted file mode 100644 index c74b05b7b..000000000 --- a/src/container/NodeRenderer/utils.js +++ /dev/null @@ -1,26 +0,0 @@ -import DefaultNode from '../../components/Nodes/DefaultNode'; -import InputNode from '../../components/Nodes/InputNode'; -import OutputNode from '../../components/Nodes/OutputNode'; -import wrapNode from '../../components/Nodes/wrapNode'; - -export function createNodeTypes(nodeTypes) { - const standardTypes = { - input: wrapNode(nodeTypes.input || InputNode), - default: wrapNode(nodeTypes.default || DefaultNode), - output: wrapNode(nodeTypes.output || OutputNode) - }; - - const specialTypes = Object - .keys(nodeTypes) - .filter(k => !['input', 'default', 'output'].includes(k)) - .reduce((res, key) => { - res[key] = wrapNode(nodeTypes[key] || DefaultNode); - - return res; - }, {}); - - return { - ...standardTypes, - ...specialTypes - }; -} diff --git a/src/container/NodeRenderer/utils.ts b/src/container/NodeRenderer/utils.ts new file mode 100644 index 000000000..8ae1c8773 --- /dev/null +++ b/src/container/NodeRenderer/utils.ts @@ -0,0 +1,29 @@ +import { ComponentType } from 'react'; + +import DefaultNode from '../../components/Nodes/DefaultNode'; +import InputNode from '../../components/Nodes/InputNode'; +import OutputNode from '../../components/Nodes/OutputNode'; +import wrapNode from '../../components/Nodes/wrapNode'; +import { NodeTypesType, NodeComponentProps } from '../../types'; + +export function createNodeTypes(nodeTypes: NodeTypesType): NodeTypesType { + const standardTypes: NodeTypesType = { + input: wrapNode((nodeTypes.input || InputNode) as ComponentType), + default: wrapNode((nodeTypes.default || DefaultNode) as ComponentType), + output: wrapNode((nodeTypes.output || OutputNode) as ComponentType) + }; + + const specialTypes: NodeTypesType = Object + .keys(nodeTypes) + .filter(k => !['input', 'default', 'output'].includes(k)) + .reduce((res, key) => { + res[key] = wrapNode((nodeTypes[key] || DefaultNode) as ComponentType); + + return res; + }, {}); + + return { + ...standardTypes, + ...specialTypes + }; +} diff --git a/src/container/ReactFlow/index.js b/src/container/ReactFlow/index.tsx similarity index 74% rename from src/container/ReactFlow/index.js rename to src/container/ReactFlow/index.tsx index 82c227a32..0abb6a309 100644 --- a/src/container/ReactFlow/index.js +++ b/src/container/ReactFlow/index.tsx @@ -1,8 +1,9 @@ -import React, { useMemo } from 'react'; -import PropTypes from 'prop-types'; +import React, { useMemo, CSSProperties, ReactNode, SVGAttributes } from 'react'; import { StoreProvider } from 'easy-peasy'; -if (process.env.NODE_ENV !== 'production') { +const nodeEnv: string = (process.env.NODE_ENV as string); + +if (nodeEnv !== 'production') { const whyDidYouRender = require('@welldone-software/why-did-you-render'); whyDidYouRender(React); } @@ -17,16 +18,40 @@ import StraightEdge from '../../components/Edges/StraightEdge'; import StepEdge from '../../components/Edges/StepEdge'; import { createEdgeTypes } from '../EdgeRenderer/utils'; import store from '../../store'; +import { Elements, NodeTypesType, EdgeTypesType, GridType, OnLoadFunc } from '../../types'; import '../../style.css'; +export interface ReactFlowProps { + elements: Elements, + style?: CSSProperties, + className?: string, + children?: ReactNode[], + 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 +}; + const ReactFlow = ({ style, onElementClick, elements, children, nodeTypes, edgeTypes, onLoad, onMove, onElementsRemove, onConnect, onNodeDragStop, connectionLineType, connectionLineStyle, deleteKeyCode, selectionKeyCode, showBackground, backgroundGap, backgroundType, backgroundColor -}) => { +}: ReactFlowProps) => { const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []); const edgeTypesParsed = useMemo(() => createEdgeTypes(edgeTypes), []); @@ -60,25 +85,6 @@ const ReactFlow = ({ ReactFlow.displayName = 'ReactFlow'; -ReactFlow.propTypes = { - onElementClick: PropTypes.func, - onElementsRemove: PropTypes.func, - onNodeDragStop: PropTypes.func, - onConnect: PropTypes.func, - onLoad: PropTypes.func, - onMove: PropTypes.func, - nodeTypes: PropTypes.object, - edgeTypes: PropTypes.object, - connectionLineType: PropTypes.string, - connectionLineStyle: PropTypes.object, - deleteKeyCode: PropTypes.number, - selectionKeyCode: PropTypes.number, - gridColor: PropTypes.string, - gridGap: PropTypes.number, - showBackground: PropTypes.bool, - backgroundType: PropTypes.oneOf(['lines', 'dots']) -}; - ReactFlow.defaultProps = { onElementClick: () => {}, onElementsRemove: () => {}, @@ -103,7 +109,7 @@ ReactFlow.defaultProps = { backgroundColor: '#eee', backgroundGap: 24, showBackground: true, - backgroundType: 'dots' + backgroundType: GridType.Dots }; export default ReactFlow; diff --git a/src/contexts/NodeIdContext.js b/src/contexts/NodeIdContext.ts similarity index 52% rename from src/contexts/NodeIdContext.js rename to src/contexts/NodeIdContext.ts index 5ca8cefcc..31dc9c920 100644 --- a/src/contexts/NodeIdContext.js +++ b/src/contexts/NodeIdContext.ts @@ -1,9 +1,11 @@ import { createContext } from 'react'; -export const NodeIdContext = createContext(null); +import { ElementId } from '../types'; + +type ContextProps = ElementId | null; + +export const NodeIdContext = createContext>(null); export const Provider = NodeIdContext.Provider; export const Consumer = NodeIdContext.Consumer; -Provider.displayName = 'NodeIdProvider'; - export default NodeIdContext; diff --git a/src/custom.d.ts b/src/custom.d.ts new file mode 100644 index 000000000..84b65a14f --- /dev/null +++ b/src/custom.d.ts @@ -0,0 +1,13 @@ +declare module '*.css' { + const content: { [className: string]: string }; + export default content; +} + +interface SvgrComponent extends React.StatelessComponent> {} + +declare module '*.svg' { + const svgUrl: string; + const svgComponent: SvgrComponent; + export default svgUrl; + export { svgComponent as ReactComponent } +} diff --git a/src/hooks/useD3Zoom.js b/src/hooks/useD3Zoom.ts similarity index 83% rename from src/hooks/useD3Zoom.js rename to src/hooks/useD3Zoom.ts index da1794fb0..cd0d23712 100644 --- a/src/hooks/useD3Zoom.js +++ b/src/hooks/useD3Zoom.ts @@ -1,21 +1,19 @@ -import { useEffect } from 'react'; +import { useEffect, MutableRefObject } from 'react'; import * as d3Zoom from 'd3-zoom'; import { select, event } from 'd3-selection'; -import { useStoreState, useStoreActions } from 'easy-peasy'; + +import { useStoreState, useStoreActions } from '../store/hooks'; const d3ZoomInstance = d3Zoom .zoom() .scaleExtent([0.5, 2]) .filter(() => !event.button); -export default function useD3Zoom(zoomPane, onMove, shiftPressed) { +export default (zoomPane: MutableRefObject, onMove: () => void, shiftPressed: boolean): void => { const state = useStoreState(s => ({ transform: s.transform, d3Selection: s.d3Selection, d3Zoom: s.d3Zoom, - edges: s.edged, - d3Initialised: s.d3Initialised, - nodesSelectionActive: s.nodesSelectionActive })); const initD3 = useStoreActions(actions => actions.initD3); diff --git a/src/hooks/useElementUpdater.js b/src/hooks/useElementUpdater.ts similarity index 64% rename from src/hooks/useElementUpdater.js rename to src/hooks/useElementUpdater.ts index 663595f76..12764842f 100644 --- a/src/hooks/useElementUpdater.js +++ b/src/hooks/useElementUpdater.ts @@ -1,10 +1,11 @@ import { useEffect } from 'react'; -import { useStoreState, useStoreActions } from 'easy-peasy'; import isEqual from 'fast-deep-equal'; +import { useStoreState, useStoreActions } from '../store/hooks'; import { parseElement, isNode, isEdge } from '../utils/graph'; +import { Elements, Node, Edge } from '../types'; -const useElementUpdater = ({ elements }) => { +const useElementUpdater = (elements: Elements): void => { const state = useStoreState(s => ({ nodes: s.nodes, edges: s.edges, @@ -15,10 +16,10 @@ const useElementUpdater = ({ elements }) => { const setEdges = useStoreActions(a => a.setEdges); useEffect(() => { - const nodes = elements.filter(isNode); - const edges = elements.filter(isEdge).map(parseElement); + const nodes = elements.filter(isNode) as Node[]; + const edges = elements.filter(isEdge).map(e => parseElement(e)) as Edge[]; - const nextNodes = nodes.map(propNode => { + const nextNodes = nodes.map((propNode) => { const existingNode = state.nodes.find(n => n.id === propNode.id); if (existingNode) { @@ -32,10 +33,10 @@ const useElementUpdater = ({ elements }) => { } return parseElement(propNode, state.transform); - }); + }) as Node[]; - const nodesChanged = !isEqual(state.nodes, nextNodes); - const edgesChanged = !isEqual(state.edges, edges); + const nodesChanged: boolean = !isEqual(state.nodes, nextNodes); + const edgesChanged: boolean = !isEqual(state.edges, edges); if (nodesChanged) { setNodes(nextNodes); diff --git a/src/hooks/useGlobalKeyHandler.js b/src/hooks/useGlobalKeyHandler.ts similarity index 67% rename from src/hooks/useGlobalKeyHandler.js rename to src/hooks/useGlobalKeyHandler.ts index 2ec81e4e6..b18275b64 100644 --- a/src/hooks/useGlobalKeyHandler.js +++ b/src/hooks/useGlobalKeyHandler.ts @@ -1,10 +1,16 @@ import { useEffect } from 'react'; -import { useStoreState, useStoreActions } from 'easy-peasy'; +import { useStoreState, useStoreActions } from '../store/hooks'; import useKeyPress from './useKeyPress'; import { isEdge, getConnectedEdges } from '../utils/graph'; +import { Elements, Node } from '../types'; -export default ({ deleteKeyCode, onElementsRemove }) => { +interface HookParams { + deleteKeyCode: number; + onElementsRemove: (elements: Elements) => void; +}; + +export default ({ deleteKeyCode, onElementsRemove }: HookParams): void => { const state = useStoreState(s => ({ selectedElements: s.selectedElements, edges: s.edges })) const setNodesSelection = useStoreActions(a => a.setNodesSelection); const deleteKeyPressed = useKeyPress(deleteKeyCode); @@ -15,7 +21,8 @@ export default ({ deleteKeyCode, onElementsRemove }) => { // we also want to remove the edges if only one node is selected if (state.selectedElements.length === 1 && !isEdge(state.selectedElements[0])) { - const connectedEdges = getConnectedEdges(state.selectedElements, state.edges); + const node = state.selectedElements[0] as unknown as Node; + const connectedEdges = getConnectedEdges([node], state.edges); elementsToRemove = [...state.selectedElements, ...connectedEdges]; } diff --git a/src/hooks/useKeyPress.js b/src/hooks/useKeyPress.ts similarity index 62% rename from src/hooks/useKeyPress.js rename to src/hooks/useKeyPress.ts index c219979db..c5b572b56 100644 --- a/src/hooks/useKeyPress.js +++ b/src/hooks/useKeyPress.ts @@ -1,18 +1,18 @@ import { useState, useEffect } from 'react'; -import { inInputDOMNode } from '../utils'; +import { isInputDOMNode } from '../utils'; -export default function useKeyPress(keyCode) { +export default (keyCode: number) => { const [keyPressed, setKeyPressed] = useState(false); - function downHandler(evt) { - if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) { + function downHandler(evt: KeyboardEvent) { + if (evt.keyCode === keyCode && !isInputDOMNode(evt)) { setKeyPressed(true); } } - const upHandler = (evt) => { - if (evt.keyCode === keyCode && !inInputDOMNode(evt.target)) { + const upHandler = (evt: KeyboardEvent) => { + if (evt.keyCode === keyCode && !isInputDOMNode(evt)) { setKeyPressed(false); } }; @@ -20,6 +20,7 @@ export default function useKeyPress(keyCode) { useEffect(() => { window.addEventListener('keydown', downHandler); window.addEventListener('keyup', upHandler); + return () => { window.removeEventListener('keydown', downHandler); window.removeEventListener('keyup', upHandler); diff --git a/src/plugins/Controls/index.js b/src/plugins/Controls/index.tsx similarity index 69% rename from src/plugins/Controls/index.js rename to src/plugins/Controls/index.tsx index 2b22f3f90..47b774102 100644 --- a/src/plugins/Controls/index.js +++ b/src/plugins/Controls/index.tsx @@ -1,20 +1,25 @@ -import React from 'react'; +import React, { CSSProperties } from 'react'; import classnames from 'classnames'; import { fitView, zoomIn, zoomOut } from '../../utils/graph'; -import PlusIcon from '../../../assets/icons/plus.svg'; +import PlusIcon from '../../../assets/icons/plus.svg'; import MinusIcon from '../../../assets/icons/minus.svg'; import FitviewIcon from '../../../assets/icons/fitview.svg'; -const baseStyle = { +const baseStyle: CSSProperties = { position: 'absolute', zIndex: 5, bottom: 10, left: 10, }; -export default ({ style, className }) => { - const mapClasses = classnames('react-flow__controls', className); +interface ControlProps { + style?: CSSProperties; + className?: string +}; + +export default ({ style, className }: ControlProps) => { + const mapClasses: string = classnames('react-flow__controls', className); return (
{
fitView()} >
diff --git a/src/plugins/MiniMap/index.js b/src/plugins/MiniMap/index.tsx similarity index 65% rename from src/plugins/MiniMap/index.js rename to src/plugins/MiniMap/index.tsx index f3e8428ac..4df5ba8ba 100644 --- a/src/plugins/MiniMap/index.js +++ b/src/plugins/MiniMap/index.tsx @@ -1,11 +1,20 @@ -import React, { useRef, useEffect } from 'react'; -import { useStoreState } from 'easy-peasy'; +import React, { useRef, useEffect, CSSProperties } from 'react'; import classnames from 'classnames'; -import { isFunction } from '../../utils' +import { useStoreState } from '../../store/hooks'; import { getNodesInside } from '../../utils/graph'; +import { Node } from '../../types'; -const baseStyle = { +type StringFunc = (node: Node) => string; + +interface MiniMapProps { + style?: CSSProperties; + className?: string | null; + bgColor?: string; + nodeColor?: string | StringFunc; +}; + +const baseStyle: CSSProperties = { position: 'absolute', zIndex: 5, bottom: 10, @@ -13,23 +22,26 @@ const baseStyle = { width: 200 }; -export default ({ style = {}, className, bgColor = '#f8f8f8', nodeColor = '#ddd' }) => { +export default ( + { style = {}, className, bgColor = '#f8f8f8', nodeColor = '#ddd' }: MiniMapProps +) => { const canvasNode = useRef(null); const state = useStoreState(s => ({ width: s.width, height: s.height, nodes: s.nodes, transform: s.transform, - })); const mapClasses = classnames('react-flow__minimap', className); + })); + const mapClasses = classnames('react-flow__minimap', className); const nodePositions = state.nodes.map(n => n.__rg.position); - const width = style.width || baseStyle.width; + const width: number = +(style.width || baseStyle.width || 0); const height = (state.height / (state.width || 1)) * width; const bbox = { x: 0, y: 0, width: state.width, height: state.height }; const scaleFactor = width / state.width; - const nodeColorFunc = isFunction(nodeColor) ? nodeColor : () => nodeColor; + const nodeColorFunc = (nodeColor instanceof Function ? nodeColor: () => nodeColor) as StringFunc; useEffect(() => { - if (canvasNode) { + if (canvasNode && canvasNode.current) { const ctx = canvasNode.current.getContext('2d'); const nodesInside = getNodesInside(state.nodes, bbox, state.transform, true); @@ -53,7 +65,7 @@ export default ({ style = {}, className, bgColor = '#f8f8f8', nodeColor = '#ddd' ); }); } - }, [nodePositions, state.transform, height]) + }, [canvasNode.current, nodePositions, state.transform, height]) return ( (); + +export const useStoreActions = typedHooks.useStoreActions; +export const useStoreDispatch = typedHooks.useStoreDispatch; +export const useStoreState = typedHooks.useStoreState; diff --git a/src/store/index.js b/src/store/index.js deleted file mode 100644 index e9ec92d04..000000000 --- a/src/store/index.js +++ /dev/null @@ -1,30 +0,0 @@ -import { createStore } from 'easy-peasy'; - -import actions from './actions'; - -const store = createStore({ - 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: {}, - - connectionSourceId: null, - connectionPosition: { x: 0, y: 0 }, - - onConnect: () => {}, - - ...actions -}); - -export default store; diff --git a/src/store/actions.js b/src/store/index.ts similarity index 53% rename from src/store/actions.js rename to src/store/index.ts index 099a5c6bb..45c33bd85 100644 --- a/src/store/actions.js +++ b/src/store/index.ts @@ -1,9 +1,118 @@ -import { action } from 'easy-peasy'; +import { createStore, Action, action } from 'easy-peasy'; import isEqual from 'fast-deep-equal'; +import { Selection as D3Selection, ZoomBehavior } from 'd3'; import { getBoundingBox, getNodesInside, getConnectedEdges } from '../utils/graph'; +import { + ElementId, Elements, Transform, Node, + Edge, Rect, Dimensions, XYPosition, + OnConnectFunc, SelectionRect, HandleElement +} from '../types'; + +type TransformXYK = { + x: number, + y: number, + k: number +}; + +type NodePosUpdate = { + id: ElementId, + pos: XYPosition +}; + +type NodeUpdate = { + id: ElementId, + width: number, + height: number, + handleBounds: { + source: HandleElement, + target: HandleElement + } +}; + +type SelectionUpdate = { + isActive: boolean; + selection?: SelectionRect; +}; + +type D3Init = { + zoom: ZoomBehavior; + selection: D3Selection; +}; + +export interface StoreModel { + width: number; + height: number; + transform: Transform; + nodes: Node[]; + edges: Edge[]; + selectedElements: Elements; + selectedNodesBbox: Rect; + + d3Zoom: ZoomBehavior; + d3Selection: D3Selection; + d3Initialised: boolean; + + nodesSelectionActive: boolean; + selectionActive: boolean; + selection: SelectionRect | null; + + connectionSourceId: ElementId | null; + connectionPosition: XYPosition; + + onConnect: OnConnectFunc; + + setOnConnect: Action; + + setNodes: Action; + + setEdges: Action; + + updateNodeData: Action; + + updateNodePos: Action; + + setSelection: Action; + + setNodesSelection: Action; + + setSelectedElements: Action + + updateSelection: Action; + + updateTransform: Action; + + updateSize: Action; + + initD3: Action; + + setConnectionPosition: Action; + + setConnectionSourceId: Action; +}; + +const storeModel: 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, + + connectionSourceId: null, + connectionPosition: { x: 0, y: 0 }, + + onConnect: () => {}, -export default { setOnConnect: action((state, onConnect) => { state.onConnect = onConnect; }), @@ -99,4 +208,8 @@ export default { setConnectionSourceId: action((state, sourceId) => { state.connectionSourceId = sourceId; }) -}; \ No newline at end of file +}; + +const store = createStore(storeModel); + +export default store; diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 000000000..41c2b39d7 --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1,137 @@ +import { CSSProperties, SVGAttributes } from 'react'; + +export type ElementId = string; + +export type Elements = Array; + +export type Transform = [number, number, number]; + +export type Position = 'left' | 'top' | 'right' | 'bottom'; + +export type XYPosition = { + x: number, + y: number +}; + +export enum GridType { + Lines = 'lines', + Dots = 'dots', +}; + +export type HandleType = 'source' | 'target'; + +export type NodeTypesType = { [key: string]: React.ReactNode }; + +export type EdgeTypesType = NodeTypesType; + +export interface Dimensions { + width: number, + height: number +} + +export interface Rect extends Dimensions { + x: number, + y: 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 +}; + +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; + style?: CSSProperties; +}; + +export interface NodeComponentProps { + id: ElementId, + type: string; + data: any; + selected?: boolean; + transform?: Transform; + xPos?: number; + yPos?: number; + onClick?: () => any; + onNodeDragStop?: () => any; + style?: CSSProperties; +}; + +export type FitViewParams = { + padding: number +}; +export type FitViewFunc = (fitViewOptions: FitViewParams) => void; + +type OnLoadParams = { + zoomIn: () => void; + zoomOut: () => void; + fitView: FitViewFunc +}; + +export type OnLoadFunc = (params: OnLoadParams) => void; + +export type OnConnectParams = { + source: ElementId; + target: ElementId; +}; + +export type OnConnectFunc = (params: OnConnectParams) => void; + +export type Connection = { + source: ElementId; + target: ElementId; +}; + +export interface HandleElement { + id?: ElementId; + position: Position; + x: number; + y: number; + width: number; + height: number; +}; + +export interface EdgeWrapperProps { + id: ElementId, + source: ElementId, + target: ElementId, + type: any, + onClick?: (edge: Edge) => void + animated?: boolean, + selected?: boolean, +}; \ No newline at end of file diff --git a/src/utils/graph.js b/src/utils/graph.ts similarity index 59% rename from src/utils/graph.js rename to src/utils/graph.ts index 98bd5a561..04f1cccc8 100644 --- a/src/utils/graph.js +++ b/src/utils/graph.ts @@ -1,51 +1,54 @@ import { zoomIdentity } from 'd3-zoom'; import store from '../store'; -import { isDefined } from './index'; +import { ElementId, Node, Edge, Elements, Transform, XYPosition, Rect, FitViewParams } from '../types'; -export const isEdge = element => element.source && element.target; +export const isEdge = (element: Node | Edge): boolean => + element.hasOwnProperty('source') && element.hasOwnProperty('target'); -export const isNode = element => !element.source && !element.target; +export const isNode = (element: Node | Edge): boolean => + !element.hasOwnProperty('source') && !element.hasOwnProperty('target'); -export const getOutgoers = (node, elements) => { +export const getOutgoers = (node: Node, elements: Elements): Elements => { if (!isNode(node)) { return []; } - const outgoerIds = elements.filter(e => e.source === node.id).map(e => e.target); + const outgoerIds = elements.filter((e: Edge) => e.source === node.id).map((e: Edge) => e.target); return elements.filter(e => outgoerIds.includes(e.id)); }; -export const removeElements = (elementsToRemove, elements) => { +export const removeElements = (elementsToRemove: Elements, elements: Elements): Elements => { const nodeIdsToRemove = elementsToRemove.map(n => n.id); - return elements.filter(e => { - return ( - !nodeIdsToRemove.includes(e.id) && - !nodeIdsToRemove.includes(e.target) && - !nodeIdsToRemove.includes(e.source) + return elements.filter((element) => { + const edgeElement = element as Edge; + return !( + nodeIdsToRemove.includes(element.id) || + nodeIdsToRemove.includes(edgeElement.target) || + nodeIdsToRemove.includes(edgeElement.source) ); }); }; -function getEdgeId(params) { - return `reactflow__edge-${params.source}-${params.target}`; +function getEdgeId(edgeParams: Edge): ElementId { + return `reactflow__edge-${edgeParams.source}-${edgeParams.target}`; } -export const addEdge = (edgeParams, elements) => { +export const addEdge = (edgeParams: Edge, elements: Elements): Elements => { if (!edgeParams.source || !edgeParams.target) { throw new Error('Can not create edge. An edge needs a source and a target'); } return elements.concat({ ...edgeParams, - id: isDefined(edgeParams.id) ? edgeParams.id : getEdgeId(edgeParams) + id: typeof edgeParams.id !== 'undefined' ? edgeParams.id : getEdgeId(edgeParams) }); } -const pointToRendererPoint = ({ x, y }, transform) => { - const rendererX = (x - transform[0]) * (1 / [transform[2]]); - const rendererY = (y - transform[1]) * (1 / [transform[2]]); +const pointToRendererPoint = ({ x, y }: XYPosition, transform: Transform): XYPosition => { + const rendererX = (x - transform[0]) * (1 / transform[2]); + const rendererY = (y - transform[1]) * (1 / transform[2]); return { x: rendererX, @@ -53,25 +56,27 @@ const pointToRendererPoint = ({ x, y }, transform) => { }; }; -export const parseElement = (e, transform) => { - if (!e.id) { +export const parseElement = (element: Node | Edge, transform?: Transform): Node | Edge => { + if (!element.id) { throw new Error('All elements (nodes and edges) need to have an id.',) } - if (isEdge(e)) { + if (isEdge(element)) { return { - ...e, - id: e.id.toString(), - type: e.type || 'default' + ...element, + id: element.id.toString(), + type: element.type || 'default' }; } + const nodeElement = element as Node; + return { - ...e, - id: e.id.toString(), - type: e.type || 'default', + ...nodeElement, + id: nodeElement.id.toString(), + type: nodeElement.type || 'default', __rg: { - position: pointToRendererPoint(e.position, transform), + position: pointToRendererPoint(nodeElement.position, transform), width: null, height: null, handleBounds : {} @@ -79,7 +84,7 @@ export const parseElement = (e, transform) => { }; }; -export const getBoundingBox = (nodes) => { +export const getBoundingBox = (nodes: Node[]): Rect => { const bbox = nodes.reduce((res, node) => { const { position } = node.__rg; const x2 = position.x + node.__rg.width; @@ -117,16 +122,16 @@ export const getBoundingBox = (nodes) => { }; }; -export const graphPosToZoomedPos = (pos, transform) => { +export const graphPosToZoomedPos = (pos: XYPosition, transform: Transform): XYPosition => { return { x: (pos.x * transform[2]) + transform[0], y: (pos.y * transform[2]) + transform[1] }; } -export const getNodesInside = (nodes, bbox, transform = [0, 0, 1], partially = false) => { - return nodes. - filter(n => { +export const getNodesInside = (nodes: Node[], bbox: Rect, transform: Transform = [0, 0, 1], partially: boolean = false): Node[] => { + return nodes + .filter(n => { const bboxPos = { x: (bbox.x - transform[0]) * (1 / transform[2]), y: (bbox.y - transform[1]) * (1 / transform[2]) @@ -146,7 +151,7 @@ export const getNodesInside = (nodes, bbox, transform = [0, 0, 1], partially = f }); }; -export const getConnectedEdges = (nodes, edges) => { +export const getConnectedEdges = (nodes: Node[], edges: Edge[]): Edge[] => { const nodeIds = nodes.map(n => n.id); return edges.filter(e => { @@ -160,7 +165,7 @@ export const getConnectedEdges = (nodes, edges) => { }); }; -export const fitView = ({ padding = 0 } = {}) => { +export const fitView = ({ padding }: FitViewParams = { padding: 0 }): void => { const state = store.getState(); const bounds = getBoundingBox(state.nodes); const maxBoundsSize = Math.max(bounds.width, bounds.height); @@ -173,12 +178,12 @@ export const fitView = ({ padding = 0 } = {}) => { state.d3Selection.call(state.d3Zoom.transform, fittedTransform); }; -export const zoomIn = () => { +export const zoomIn = (): void => { const state = store.getState(); state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] + 0.2); }; -export const zoomOut = () => { +export const zoomOut = (): void => { const state = store.getState(); state.d3Zoom.scaleTo(state.d3Selection, state.transform[2] - 0.2); }; diff --git a/src/utils/index.js b/src/utils/index.js deleted file mode 100644 index 2600fd4e9..000000000 --- a/src/utils/index.js +++ /dev/null @@ -1,10 +0,0 @@ -export const isFunction = obj => !!(obj && obj.constructor && obj.call && obj.apply); - -export const isDefined = obj => typeof obj !== 'undefined'; - -export const inInputDOMNode = e => e && e.target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.nodeName); - -export const getDimensions = (node = {}) => ({ - width: node.offsetWidth, - height: node.offsetHeight -}); diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 000000000..6b7959ebe --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,12 @@ +import { DraggableEvent } from 'react-draggable'; +import { MouseEvent as ReactMouseEvent } from 'react'; + +export const isInputDOMNode = (e: ReactMouseEvent | DraggableEvent | KeyboardEvent) => { + const target = e.target as HTMLElement; + return e && target && ['INPUT', 'SELECT', 'TEXTAREA'].includes(target.nodeName); +}; + +export const getDimensions = (node: HTMLDivElement) => ({ + width: node.offsetWidth, + height: node.offsetHeight +}); diff --git a/tsconfig.json b/tsconfig.json index 9313a5f83..cbbd40615 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,16 +1,18 @@ { "compilerOptions": { - "outDir": "build", + "outDir": "dist", "module": "esnext", "target": "es5", "lib": ["es6", "dom", "es2016", "es2017"], "jsx": "react", "moduleResolution": "node", "forceConsistentCasingInFileNames": true, - "strictNullChecks": true, + "strictNullChecks": false, "noUnusedLocals": true, "noUnusedParameters": true, - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, + "noImplicitAny": true, + "suppressImplicitAnyIndexErrors": true }, "include": ["src"], "exclude": ["node_modules", "build", "dist", "example", "rollup.config.js"]